нормально, так что я получил это работает, если кому-то интересно, вот мое решение - любые указатели лучше один радушны, как i'am нуб в угловом мире :)
public activate(nextInstruction: ComponentInstruction): Promise<any> {
let previousInstruction = this.currentInstruction;
this.currentInstruction = nextInstruction;
let componentType = nextInstruction.componentType;
let childRouter = this.parentRouter.childRouter(componentType);
let providers = ReflectiveInjector.resolve([
provide(RouteData, {useValue: nextInstruction.routeData}),
provide(RouteParams, {useValue: new RouteParams(nextInstruction.params)}),
provide(routerMod.Router, {useValue: childRouter})
]);
this.previousComponentRef = this.currentComponentRef;
return this.loader.loadNextToLocation(componentType, this.currentElementRef, providers)
.then((componentRef) => {
this.currentComponentRef = componentRef;
Observable.of(true).delay(100).toPromise().then(response => {
if(this.previousComponentRef){
this.previousComponentRef.location.nativeElement.className = 'animateout';
}
this.currentComponentRef.location.nativeElement.className = 'animatein';
});
if (hasLifecycleHook(hookMod.routerOnActivate, componentType)) {
return (<OnActivate>componentRef.instance)
.routerOnActivate(nextInstruction, previousInstruction);
}
});
}
public routerCanDeactivate(nextInstruction: ComponentInstruction): Promise<boolean> {
if (isBlank(this.currentInstruction)) {
return this.resolveToTrue;
}
let ref = this.currentComponentRef;
Observable.of(true).delay(2000).toPromise().then(response => {
ref.destory();
});
return this.resolveToTrue;
}
как вы можете видеть аи есть расширенный маршрутизатор-выход и реализовал два вышеописанных метода, в которых сначала добавляются классы анимации к компоненту, а второй - с компонентами, предназначенными для анимации, вот пример анимации (dm-page, dm-home, dm-contact - это селектор компонентов):
dm-page, dm-home, dm-contact{position: fixed;top:100%; left:0; width: 100%; height: 100%;
-webkit-transition: top .8s ease-in-out;
-moz-transition: top .8s ease-in-out;
-o-transition: top .8s ease-in-out;
transition: top .8s ease-in-out;}
.animatein {top:0;}
.animateout {top:-100%;}
Я не думаю, что в настоящее время существует простое решение, но команда Angular работает над поддержка поддержки AFAIK. –
хм, да, я так и думал, но любые указатели на жесткое решение? :) Что в угловой отвечает за удаление/добавление компонента в розетку маршрутизатора? Могу ли я, например, расширить маршрутизатор-выход, чтобы отложить удаление компонента «prev»? –
Хмм, не то, чтобы я смотрел на источник. Все, что вам нужно, происходит в [RouterOutlet] (https://github.com/angular/angular/blob/master/modules/angular2/src/router/directives/router_outlet.ts). Обычно для авторизации используется пользовательская реализация. Я думаю, что не слишком сложно создать пользовательскую реализацию для ваших целей. Например, см. Http://www.captaincodeman.com/2016/03/31/angular2-route-security/ –