2016-12-18 4 views
3

Angenommen, eine Komponente zwei Lebenszyklus Haken hat:Kann ngOnDestroy vor ngAfterContentInit passieren?

{ 
    ngAfterContentInit() { 
     this.subscription = rx.Observable 
     .interval() 
     .subscribe(value => this.value = value) 
    }, 
    ngOnDestroy() { 
     this.subscription.unsubscribe() 
    } 
} 

Ist es möglich, ngOnDestroy vor ngAfterContentInit genannt zu werden, und wenn ja, warum eigentlich? Dies scheint der Fall zu sein, wenn ich in meiner Anwendung schnell genug Komponenten einfügen/entfernen muss. Dokumente sind nicht klar über das Thema.

Ich frage diese Frage zu wissen, ob ngOnDestroy nicht, dass irgendetwas von anderen Lebenszyklus-Callbacks übernehmen sollte definiert und kugelsicher ngOnDestroy sollte Anwesenheitskontrolle durchführen, wie folgt aus:

ngOnDestroy() { 
    this.subscription && this.subscription.unsubscribe() 
} 

Antwort

2

The documentation ist sehr klar in der Größenordnung der Lebenszyklus-Haken und berücksichtigt nicht die Möglichkeit, die Reihenfolge zu ändern.

Darüber hinaus, wie in this example gesehen werden kann, ist die Kompilierung der Komponenten synchron. Wenn Vorlagen geladen werden sollen, werden sie vor der Kompilierung angefordert.

Die Initialisierung sollte in diesem Protokoll führen:

bootstrap 
bootstrap tick 
constructor 
ngOnInit 
ngAfterContentInit 
ngAfterViewInit 
constructor tick 

Für synchrone Operationen gibt es keine Möglichkeit für einiges Stück Code ‚schneller‘ zu sein und außerhalb der Reihenfolge ausgeführt werden.

this.subscription && ... Prüfung ist nicht erforderlich.

+0

Danke. Ich plane, die Antwort gründlich zu bewerten, wenn ich genug Zeit habe, um sicherzustellen, dass es genau das ist, wonach ich gesucht habe. –

Verwandte Themen