2016-11-19 3 views
1

Sagen wir, wir haben: <li *ngFor="let item of items" [@myTrigger]='state' (@myTrigger.start)="animStart($event)" (@myTrigger.done)="animDone($event)">{{ item }}</li>Angular 2 Animation Callback .done, Eigenschaften einstellen?

Und animDone Methode:

animDetails: string; 

animDone(event:any) { 
    console.log('Ended!'); 
    this.animDetails = 'I am done!'; 
} 

Nach Ansicht Ich habe {{ animDetails }}

Was während seltsam ist, console.log ('! Ended') feuert angemessen, animDetails nicht.

Die erste Animation, nichts wird verändert. Die zweite Animation (ausgelöst durch einen Klick auf einen Knopf), "Ich bin fertig!" feuert sofort beim Start, im Gegensatz zu .done.

Antwort

1

AFAIK-Animationen werden aus Leistungsgründen außerhalb der Angulars-Zone ausgeführt.

constructor(private cdRef:ChangeDetectorRef) {} 

animDetails: string; 

animDone(event:any) { 
    console.log('Ended!'); 
    this.animDetails = 'I am done!'; 
    this.cdRef.detectChanges(); 
} 

Es gab ein Problem beim Ausführen von Animationsrückrufen innerhalb der Angulars-Zone. Ich nehme an, es wurde bereits behoben, aber Ihre Frage scheint etwas anderes zu bedeuten, außer wenn Sie nicht die neueste Angular2-Version verwenden.

+0

Ah! Ich verwende den Schnellstart von Angular 2 für dieses spezielle Beispiel. Könnte das der Grund sein? Übrigens, ich sehe Ihren Namen * überall * in Angular 2. Gute Arbeit! –

+0

Danke. Was meinst du mit "Schnellstart"? https://angular.io/docs/ts/latest/quickstart.html? Es scheint die neueste Version zu verwenden. Das Problem wurde vor 10 Tagen behoben. Es ist möglicherweise nicht in der neuesten Version enthalten. https://github.com/angular/angular/issues/11881 –

Verwandte Themen