1. ホーム
  2. angular

[解決済み] Angularのビュープロバイダーとは何ですか?また、プロバイダとビュープロバイダの違いは何ですか?

2023-02-09 09:33:32

質問

以下のコードにおけるviewProvidersとは何でしょうか?また、プロバイダとどう違うのでしょうか?

class Greeter {
   greet(name:string) {
     return 'Hello ' + name + '!';
   }
}    
@Component({
  selector: 'greet',
  viewProviders: [
    Greeter
  ],
  template: `<needs-greeter></needs-greeter>`    
})
class HelloWorld {
}

どのように解決するのですか?

あなたの例では、プロバイダとビュープロバイダの間に違いはありません。なぜなら、HelloWorldのテンプレートでは、プロバイダとビュープロバイダの間に <ng-content> . の中にコンテンツを投影するのであれば <ng-content>...</ng-content> の中にコンテンツを投影していた場合、投影されたコンテンツに Greeter を注入することはできません。

viewProviders: [Greeter] 

もし、投影されたコンテンツに Greeter を潜在的に注入させたいのであれば

providers: [Greeter]

そこで viewProviders は提供者を投影されたコンテンツ以外の子に限定しているのに対し providers は全ての子がプロバイダを使用できるようにします。 その値として viewProviders によって、投影されたコンテンツがサービスに干渉するのを防ぐことができ、これは特にライブラリで有用でしょう。