以下代码中的viewProviders是什么?它与提供商有何不同?
class Greeter {
greet(name:string) {
return 'Hello ' + name + '!';
}
}
@Component({
selector: 'greet',
viewProviders: [
Greeter
],
template: `<needs-greeter></needs-greeter>`
})
class HelloWorld {
}
答案 0 :(得分:57)
在您的示例中,provider和viewProviders之间没有区别,因为HelloWorld的模板不使用<ng-content>
。如果您在<ng-content>...</ng-content>
内预测内容,则Greeter无法注入预计的内容,因为您正在使用
viewProviders: [Greeter]
如果您希望Greeter可能被注入到预计的内容中,您可以使用
providers: [Greeter]
因此viewProviders
将提供者限制为除预计内容之外的其他子级,而providers
允许所有子级使用提供者。值viewProviders
允许您阻止预计的内容弄乱您的服务,这在图书馆中尤其有用。
答案 1 :(得分:3)