相关疑难解决方法(0)

在Angular 4中使用Renderer

我理解为什么最好使用渲染器而不是直接操作Angular2项目中的DOM.但是,我已经多次卸载,清除缓存,重新安装Node,Typescript和Angular-CLI,并且在尝试注入渲染器时仍然出现错误.

import { Injectable, Renderer2 } from '@angular/core';
constructor(private renderer: Renderer2) {}
Run Code Online (Sandbox Code Playgroud)

__zone_symbol__message:"没有Renderer2的提供者!"

__zone_symbol__stack:Error_ZoneAwareError出现错误

有没有人有任何想法我做错了什么?

typescript angular-cli angular

14
推荐指数
2
解决办法
2万
查看次数

服务中没有"渲染器提供程序"错误

我试图在服务中使用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)

仍然没有成功,仍然得到同样的错误.我相信我在这里错过了一些技巧.它在我在组件中使用相同的东西时工作,我不知道它为什么不在服务类中接受它.

dependency-injection typescript angular2-services angular

-1
推荐指数
1
解决办法
801
查看次数