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
Migliorare l'organizzazione delle risorse con Azure Policy
Generare una User Delegation SAS in .NET per Azure Blob Storage
Recuperare App Service cancellati su Azure
Documentare i servizi REST con Swagger e OpenAPI con .NET 9
Eliminare record doppi in Sql Server
Managed deployment strategy in Azure DevOps
Abilitare automaticamente il force push di un gruppo su Azure DevOps
Change tracking e composition in Entity Framework
Supportare la sessione affinity di Azure App Service con Application Gateway
Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
Gestire codice JavaScript con code splitting e lazy loading
Utilizzare WhenEach per processare i risultati di una lista di task