[英]Angular - using Renderer2 inside the constructor of a directive
I want to migrate an Angular app to a higher version and one the steps is to replace Renderer
with Renderer2
, and I have a problem because Renderer2
seems to be not defined inside the constructor:我想将 Angular 应用程序迁移到更高版本,其中一个步骤是将Renderer
替换为Renderer2
,我遇到了一个问题,因为Renderer2
似乎没有在构造函数中定义:
constructor(private el: ElementRef, private renderer: Renderer2) {
renderer.setAttribute(el.nativeElement, "data-id", this.uniqueId);
}
So I get an error which says:所以我得到一个错误,它说:
TypeError: Cannot read property 'setAttribute' of undefined类型错误:无法读取未定义的属性“setAttribute”
Do I have to move renderer.setAttribute(...)
into OnInit or something like that?我是否必须将renderer.setAttribute(...)
移动到 OnInit 或类似的东西中? With Renderer
this worked fine, but with Renderer2
it no longer works.使用Renderer
这工作正常,但使用Renderer2
它不再工作。
Current Angular version: 5.2.10当前 Angular 版本:5.2.10
Please advise.请指教。 Thanks!谢谢!
I add do this on ngAfterViewInit
.我在ngAfterViewInit
上添加了这个。 That means after first render!这意味着在第一次渲染之后!
I would also check explicit If the element is already initialized and maybe add a retry policy.我还会检查显式元素是否已经初始化,并可能添加重试策略。 if(el)el.nativeElement...
(If your element is inside a *ngIf
directive). if(el)el.nativeElement...
(如果您的元素在*ngIf
指令内)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.