2016-05-03 16 views
10

Demo http://plnkr.co/edit/7uoVecfa62i8No8GtQHI?p=previewAngular 2 - ngOnDestroy nicht ausgelöst

Als ich den ersten Abschnitt mit verschachtelten Komponenten verstecken mit * ngIf, ngOnDestroy jeder verschachtelten Komponente ausgelöst wird.

<div *ngIf="!ff2"> 
    <my-component 
    ></my-component> 
    <my-component 
    ></my-component> 
    <my-component 
    ></my-component> 
    <my-component 
    ></my-component> 
    <my-component 
    ></my-component> 
    </div> 

Ausgabe in der Konsole ist:

init 
    init 
    init 
    init 
    init 
    destroy 
    destroy 
    destroy 
    destroy 
    destroy 

Aber wenn ich den zweiten Abschnitt verstecken, wo Subkomponenten von * ngFor dupliziert werden, nicht jeder ngOnDestroy ausgelöst wird.

<div *ngIf="!ff"> 
     <my-component 
      *ngFor="#i of [1,2,3,4,5,6]" 
     ></my-component> 
     </div> 

Ausgabe in der Konsole ist:

(6) init 
(3) destroy 

Sie eine Idee haben, wenn ich etwas falsch machen, oder gibt es ein Problem in angular2? Vielen Dank.

+1

Sieht aus wie ein Fehler. –

+2

in angular Beta 9 es funktioniert, wie ich erwartet habe, so dass sie einen Fehler haben http://plnkr.co/edit/Q8tLJKlpF6wEVcMWfxH1?p=preview –

+0

Fehlerbericht https://github.com/angular/angular/issues/8458 –

Antwort

1

Versuchen Sie den unten genannten Code. es sollte funktionieren,

<button type="button" (click)="ff = !ff">toggle</button> 
<template ngFor let-item [ngForOf]="[1,2,3,4,5,6]"> 
    <my-component *ngIf="!ff"></my-component> 
</template>