Frage
Was ist der eleganteste Weg, @ViewChild
nachdem das entsprechende Element in der Vorlage angezeigt wurde?
Unten ist ein Beispiel. Auch Plunker erhältlich.
Vorlage:
<div id="layout" *ngIf="display">
<div #contentPlaceholder></div>
</div>
Komponente:
export class AppComponent {
display = false;
@ViewChild('contentPlaceholder', {read: ViewContainerRef}) viewContainerRef;
show() {
this.display = true;
console.log(this.viewContainerRef); // undefined
setTimeout(()=> {
console.log(this.viewContainerRef); // OK
}, 1);
}
}
Ich habe eine Komponente, deren Inhalt standardmäßig ausgeblendet ist. Wenn jemand die show()
Methode aufruft , wird sie sichtbar. Bevor jedoch die Erkennung von Angular 2-Änderungen abgeschlossen ist, kann ich nicht darauf verweisen viewContainerRef
. Normalerweise verpacke ich alle erforderlichen Aktionen setTimeout(()=>{},1)
wie oben gezeigt. Gibt es einen korrekteren Weg?
Ich weiß, dass es eine Option gibt ngAfterViewChecked
, aber sie verursacht zu viele nutzlose Anrufe.