Fino alla versione 7 di Angular, i decorator ViewChild e ContentChild impostano la variabile che decorano a partire dal metodo ngAfterViewInit della pipeline di esecuzione del component. Questo esempio mostra questo funzionamento.
<h1 #MyDiv>mydiv</h1>
@ViewChild('MyDiv') myDiv: ElementRef<HTMLDivElement>;
ngOnInit() {
console.log(this.myDiv); // ritorna undefined
}
ngAfterViewInit() {
console.log(this.myDiv); // ritorna div
}A partire da Angular 8, se il tag non è contenuto all'interno di un template con una direttiva strutturale come ngIf e ngFor, allora la variabile decorata è disponibile già nei metodi che vengono eseguiti prima di ngAfterViewInit come mostrato in questo esempio.
ngOnInit() {
console.log(this.myDiv); // ritorna div
}
ngAfterViewInit() {
console.log(this.myDiv); // ritorna div
}Se vogliamo mantenere il comportamento precedente ad Angular 8, dobbiamo inserire un secondo parametro nei decorator ViewChild e ContentChild. Questo parametro deve essere un oggetto con la proprietà static impostata a true.
@ViewChild('MyDiv', { static: true }) myDiv: ElementRef<HTMLDivElement>;Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestire gli errori nelle Promise JavaScript con try()
Integrare email esterne con Azure Functions e Managed Connectors
Ottimizzare i costi con Smart tier in Azure Blob Storage
Validare i dati di una colonna JSON in SQL Server
Logica Graceful Degradation in HTML e CSS
Validazione personalizzata nelle Minimal API di ASP.NET Core
Running workloads and operations with Azure Kubernetes Service
Abilitare il rolling update su Azure Functions flex consumption
Rendere affidabile lo scale out su Azure App Service
Integrare il Docker Model Runner in un workflow di GitHub
Utilizzo del persistent state di Blazor nel prerendering
Effettuare chiamate API tramite GitHub App


