我正在使用 Angular 5.2.9。
我想知道什么时候应该在 ngStyle 上使用 Renderer2 ?哪个是最好的解决方案?
1:<div #div>FOO BAR</div>
@ViewChild('div') div: ElementRef;
constructor(private renderer: Renderer2) {}
ngAfterViewInit() {
this.renderer.setStyle(this.div.nativeElement, 'background', 'blue');
}
2:<div [ngStyle]="styleValue">FOO BAR</div>
styleValue: any = {};
ngAfterViewInit() {
this.styleValue = {background: 'blue'};
}
我知道在 ngFor 中使用“ngStyle”更容易,例如:
<div ngFor="let elem of array" [ngStyle]="styleValue">
否则你应该为这种情况做:<div ngFor="let elem of array" #div>FOO BAR</div>
@ViewChildren('div') divs: QueryList<ElementRef>;
constructor(private renderer: Renderer2) {}
ngAfterViewInit() {
this.divs.change.subscribe(() => {
this.toFlipArray.forEach((div) => {
this.renderer.setStyle(this.div.nativeElement, 'background', 'blue');
})
}
}
在 ngFor 中使用 Renderer2 的时间似乎更长,而且我什至没有终止订阅。
性能有区别吗?也许在别的地方?