2016-03-09 12 views
21

以下のコードのviewProvidersとは何ですか?そしてそれはプロバイダとどう違うのですか?あなたの例ではAngularのviewprovidersとは何ですか?そして、b/wプロバイダとviewprovidersの違いは何ですか?

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

この記事では、これらの違いについてhttp://blog.thoughtram.io/angular/2015/08/20/host-and-visibility-in-angular-2-dependency-injection.htmlについて説明します。 –

答えて

28

のHelloWorldのテンプレートが<ng-content>を使用しないため、プロバイダとviewProvidersに違いはありません。あなたは<ng-content>...</ng-content>内のコンテンツを投影した場合は、

viewProviders: [Greeter] 

を使用しているので、その後、グリーターは、投影内容に注入することができませんでしたあなたは、潜在的にグリーターを望んでいた場合は投影内容に注入することが、あなたは

を使用したいです
providers: [Greeter] 

したがってviewProvidersは、プロバイダをプロジェクションコンテンツ以外の子供に限定し、providersは、すべての子供がプロバイダを使用できるようにします。価値観は、viewProvidersは、あなたのサービスに映写されたコンテンツが邪魔にならないようにすることができます。これは、図書館で特に役立ちます。

関連する問題