2016-03-09 53 views
21

什么是viewProviders在下面的代码?它与供应商有何不同?Angular中的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

在你的榜样,有供应商和viewProviders因为HelloWorld的模板不使用<ng-content>没有什么区别。如果你是内<ng-content>...</ng-content>突出的内容,然后招待员不能在投影的内容,因为你使用

viewProviders: [Greeter] 

如果你想迎宾潜在注入投影内容注入,你会使用

providers: [Greeter] 

所以viewProviders限制供应商给儿童以外的预计内容,而providers允许所有儿童使用供应商。值得注意的是,viewProviders允许您防止投影内容与您的服务混淆,这在图书馆中可能特别有用。

相关问题