Angular 2 のコンポーネントの外部にサービスを挿入するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-26 05:25:13
オリジナル
777 人が閲覧しました

How to Inject Services Outside of Components in Angular 2?

Angular 2 での依存関係の挿入: コンポーネントの外部にサービスを挿入する

Angular 2 では、@Component デコレーターを使用してコンポーネントにサービスを簡単に挿入できます。 。ただし、コンポーネントの外部にサービスを挿入する必要があるシナリオもあります。この記事では、依存関係注入 (DI) を使用してこれを実現する方法について説明します。

Injectable Services

サービスの DI を有効にするには、サービスを @Injectable デコレータで修飾する必要があります。 。このデコレータはクラスを注入可能としてマークし、そのパラメータを注入できるようにします。 「Injectable」という名前は、クラスを注入可能にするのではなく、パラメータを注入できるという意味でクラスを注入可能にするため、若干誤解を招きやすいことに注意してください。

依存性注入メカニズム

Angular 2 はインジェクターの階層システムを使用しており、各レベルは特定のコンポーネントまたはコンポーネントのセットに対応しています。コンポーネント。 DI システムは依存関係に遭遇すると、まず現在のインジェクターを調べます。依存関係が見つからない場合は、依存関係のプロバイダーが見つかるまでインジェクター階層を上に移動します。

インジェクター間でのサービスの注入

サービスを別のサービスに注入するにはサービスを作成するには、依存サービスのコンストラクターで依存関係を定義し、依存サービスに @Injectable デコレーターを追加するだけです。 service.

例:

@Injectable()
export class MyFirstSvc {
  // ...
}

@Injectable()
export class MySecondSvc {
  constructor(private myFirstSvc: MyFirstSvc) {
    // ...
  }
}
ログイン後にコピー

この例では、MySecondSvc は MyFirstSvc に依存しており、MyFirstSvc が利用可能な任意のインジェクターに注入できます。

定義プロバイダー

プロバイダーを指定するにはサービスの場合は、@Component または NgModule デコレーターのプロバイダー配列を使用します。たとえば、MyFirstSvc をアプリケーション インジェクターのプロバイダーとして定義したい場合は、次のように定義できます。

@Component({
  // ...
  providers: [MyFirstSvc]
})
export class AppComponent {
  // ...
}
ログイン後にコピー

結論

階層構造を理解することで、インジェクターと @Injectable デコレーターの性質を利用して、Angular 2 のコンポーネントの外部にサービスを効果的に注入できます。これにより、モジュール式の作成が可能になります。簡単に注入してアプリケーション全体で共有できる再利用可能なサービス。

以上がAngular 2 のコンポーネントの外部にサービスを挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート