Qual è la differenza tra le funzioni ngAfterContentInit e ngAfterViewInit?Qual è la differenza tra ngAfterContentInit e ngAfterViewInit?
risposta
Il contenuto è ciò che viene trasmesso in genere ai bambini da proiettare in un elemento <ng-content>
di un componente.
La vista è il modello del componente corrente.
La vista viene inizializzata dopo il contenuto e ngAfterViewInit()
viene quindi chiamato dopo ngAfterContentInit()
.
@Component({
selector: 'parent-cmp',
template: '<div #wrapper><ng-content></ng-content></div>'
})
class ParentComponent {
@ViewChild('wrapper') wrapper:ElementRef;
@ContentChild('myContent') content:ElementRef;
ngAfterViewInit() {
console.log('ngAfterViewInit - wrapper', this.wrapper);
console.log('ngAfterViewInit - content', this.content);
}
ngAfterContentInit() {
console.log('ngAfterContentInit - wrapper', this.wrapper);
console.log('ngAfterContentInit - content', this.content);
}
}
<parent-cmp><div #myContent>foo</div></parent-cmp>
Se si esegue questo codice, l'output per ngAfterViewInit - content
dovrebbe essere null
.
Maggiori informazioni su ganci del ciclo di vita vedono https://angular.io/guide/lifecycle-hooks
L'immagine seguente mostra l'ordine dei ganci. fonte: Angular Lifecycle Hooks
ngAfterContentInit
: Questo è chiamato dopo componenti contenuto esterno è stato inizializzato.
ngAfterViewInit
: Questo viene chiamato dopo che la vista componente e le sue viste figlio sono state inizializzate.
potrebbe essere qualcosa cambiato dal 22 giugno, perché restituisce oggetto in entrambi i casi –
Non sono sicuro di cosa intendi con "restituisce oggetto". Immagino sia meglio fare una nuova domanda con il codice che mostri quello che hai provato con lo –
... è la stessa domanda - cercare di capire la differenza. qui il codice - http://plnkr.co/edit/eOOzPdpRrsaZy1caBZn3?p=preview –