mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-06-11 02:33:10 +08:00
Translated 85 skill sub-reference files to achieve full parity with the English source: - skills/angular-developer/references/ — 35 files (all references) - skills/remotion-video-creation/rules/ — 28 files (all rules) - skills/tinystruct-patterns/references/ — 5 files - skills/openclaw-persona-forge/references/ — 6 files - skills/skill-comply/prompts/ — 3 files - skills/lead-intelligence/agents/ — 4 files - skills/brand-voice/references/ — 1 file - skills/frontend-slides/ — 2 files - hooks/memory-persistence/README.md — 1 file English source parity: 0 missing files (excluding rules/zh/, internal docs, and experimental examples absent from zh-CN)
2.4 KiB
2.4 KiB
インジェクションコンテキスト
inject() 関数はコードがインジェクションコンテキスト内で実行されている場合にのみ使用できます。
インジェクションコンテキストが利用可能な場所
インジェクションコンテキストは以下の場所で自動的に利用可能です:
- DI によってインスタンス化されるクラス(
@Injectable、@Component、@Directive、@Pipe)のフィールド初期化子。 - DI によってインスタンス化されるクラスのコンストラクター。
useFactoryまたはInjectionToken設定で指定されたファクトリー関数。- Angular によって実行される関数型 API(例:関数型ルートガード、リゾルバー、インターセプター)。
@Component({...})
export class Example {
// 有効:フィールド初期化子
private router = inject(Router);
constructor() {
// 有効:コンストラクター
const http = inject(HttpClient);
}
onClick() {
// 無効:インジェクションコンテキストではない
// const auth = inject(AuthService);
}
}
runInInjectionContext
インジェクションコンテキスト内で関数を実行する必要がある場合(動的コンポーネントの作成やテストでよく必要になります)、runInInjectionContext を使用します。これには既存のインジェクター(EnvironmentInjector または Injector など)へのアクセスが必要です。
import {Injectable, inject, EnvironmentInjector, runInInjectionContext} from '@angular/core';
@Injectable({providedIn: 'root'})
export class MyService {
private injector = inject(EnvironmentInjector);
doSomethingDynamic() {
runInInjectionContext(this.injector, () => {
// ここで inject() を使用することが有効になる
const router = inject(Router);
});
}
}
assertInInjectionContext
ユーティリティ関数が有効なコンテキストから呼び出されることを保証するために assertInInjectionContext を使用します。そうでない場合は明確なエラーをスローします。
import {assertInInjectionContext, inject, ElementRef} from '@angular/core';
export function injectNativeElement<T extends Element>(): T {
assertInInjectionContext(injectNativeElement);
return inject(ElementRef).nativeElement;
}