Я использую Angular 5.2.9.
Мне было интересно, когда я должен использовать Renderer2 поверх ngStyle? Какое решение является лучшим?
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'};
}
Я знаю, что проще использовать «ngStyle» в ngFor, например:
<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, и я даже не убил подписку.
Есть ли разница в производительности? Может быть, где-то еще?