2016-05-23 2 views
2

Ich weiß, wir können ein Versprechen an ngOnDestroy Methode zurückgeben, so dass wir genug Zeit haben können, Komponenten wie HTML auszublenden. Es ist jedoch möglich, den HTML-Code der aktuellen Route auszublenden und den HTML-Code für die Route, die gleichzeitig zur nächsten Transit-Route geht, einzublenden.Angular 2 Animation - Wie man zwei Routenkomponenten gleichzeitig beim Übergang von Route zu Route animiert?

Innerhalb einer Komponente:

export class BaseResourceComponent extends BaseComponent implements OnDeactivate { 
    ... 
    routerOnDeactivate(next: ComponentInstruction, prev: ComponentInstruction) { 
     return new Promise((res, rej) => setTimeout(() => res(true), 400)); 
    } 
} 

Ich weiß, wie es in Angular 1 zu tun, aber wirklich nicht sicher, Angular 2-Unterstützung oder nicht.

+0

Das Animationsmodul von angular2 ist noch nicht verfügbar. Obwohl es laut [diesem Youtube-Video] (https://www.youtube.com/watch?v=Hr4IKlr9mhg) bald verfügbar sein wird. – Abdulrahman

+0

Ich denke, dass Sie derzeit einen benutzerdefinierten '' brauchen, der das unterstützt, damit die neue Komponente hinzugefügt wird, bevor die vorherige entfernt wird. –

+0

@ GünterZöchbauer: kam hierher, um die gleiche Frage zu stellen, die OP hat, mit der zusätzlichen Frage "Kann es anders gemacht werden, als einen neuen Router-Ausgang zu schreiben?" rate jetzt muss ich nicht ... Problem ist 'Router' ist stark Referenzierung '' so müssen Sie das auch ersetzen ... :( – TDaver

Antwort

-2

///////////////////////////////////////////////////////////////// 
 
// About Component Start 
 
///////////////////////////////////////////////////////////////// 
 
@Component({ 
 
    selector: 'about-cmp' 
 
}) 
 

 
@View({ 
 
    template: ` 
 
    <h2 class="title">About Page</h2> 
 
    ` 
 
}) 
 

 
class AboutCmp implements OnActivate, onDeactivate { 
 

 
    onActivate(next: ComponentInstruction, prev: ComponentInstruction) { 
 
    console.log("About Page - initialized"); 
 
    } 
 

 
    onDeactivate(next: ComponentInstruction, prev: ComponentInstruction) { 
 
    console.log("About Page - destroyed"); 
 
    } 
 

 
}

+0

Dies wird nicht funktionieren, da der neue erst gestartet wird, wenn onDeactivate beendet ist. Und sobald diese Methode zurückkehrt (oder ihr Versprechen erfüllt ist), wird die alte Komponente zerstört, daher können Sie die beiden nicht gleichzeitig anzeigen. – TDaver