Using Renderer in Angular 4

前端 未结 2 867
你的背包
你的背包 2020-12-24 14:09

I understand why it\'s better to use renderer instead of directly manipulating the DOM in Angular2 projects. However, I have uninstalled, clear cache, reinstalled Node, Type

2条回答
  •  余生分开走
    2020-12-24 14:19

    You cannot inject Renderer2, but we can run RendererFactory2 to get Renderer2 instance inside @Injectable() service. There is the way which Angular using internally in webworkers, for example.

    I've solved the problem with the code below:

    import { Renderer2, RendererFactory2 } from '@angular/core';
    
    @Injectable()
    class Service {
        private renderer: Renderer2;
    
        constructor(rendererFactory: RendererFactory2) {
            this.renderer = rendererFactory.createRenderer(null, null);
        }
    }
    

    Parameters of RendererFactory2.createRenderer method are:

    • hostElement with type any
    • type with type RendererType2|null

    You can see that (null, null) parameters are here: https://github.com/angular/angular/blob/e3140ae888ac4037a5f119efaec7b1eaf8726286/packages/core/src/render/api.ts#L129

提交回复
热议问题