Gau*_*via -1 dependency-injection typescript angular2-services angular
我试图在服务中使用Angular 2 Renderer类方法.
首先,我将它注入到类构造函数中,如下所示:
@Injectable
export class MyService{
constructor(private renderer: Renderer,
private _cd: ChangeDetectorRef){}
myFunct(){
this.renderer.setElementStyle(......);
}
......
}
Run Code Online (Sandbox Code Playgroud)
有了这个,浏览器控制台就抛出一个错误堆栈:
Error: No provider for Renderer!
at NoProviderError.BaseError [as constructor] (http://local.xyz.com:3000/vendor.bundle.js:30912:34)
at NoProviderError.AbstractProviderError [as constructor] (http://local.xyz.com:3000/vendor.bundle.js:28881:16)
Run Code Online (Sandbox Code Playgroud)
我在StackOverflow上阅读了与此类问题相关的几个答案,以及Angular DI上的一篇关于nattram的博客文章,并尝试使用如下@Inject的服务类构造函数:
constructor(@Inject(Renderer) renderer : Renderer){}
Run Code Online (Sandbox Code Playgroud)
仍然没有成功,仍然得到同样的错误.我相信我在这里错过了一些技巧.它在我在组件中使用相同的东西时工作,我不知道它为什么不在服务类中接受它.
小智 5
您始终可以通过以下方式创建渲染器RendererFactory:
@Injectable
export class MyService {
private renderer: Renderer2;
constructor(rendererFactory: RendererFactory2) {
this.renderer = rendererFactory.createRenderer(null, null);
}
}
Run Code Online (Sandbox Code Playgroud)
通过传入null, null你实际上是检索Renderer应用程序的默认值,所以不应该有太多的开销
| 归档时间: |
|
| 查看次数: |
801 次 |
| 最近记录: |