Я только что обновил @ angular/router до 3.0.0-alpha.3. Однако я не могу найти интерфейс OnActivate, доступный в 2.0.0-rc.1. Любые намеки приветствуются.
@angular/router 3.0.0-alpha.3: Как перенести OnActivate
Ответ 1
Я лично не убежден, что CanActivate и Deactivate охранники - это лучшие места для миграции логики OnActivation, которая не является защитой какого-либо рода.
Возможно, новые события маршрутизатора - лучший вариант: Как использовать NavigationStart
Ответ 2
Так как у нас еще нет документации и она появится в ближайшие недели. Вы хотели намек. Вот что я нашел для вас. Похоже, вам нужно передать дополнительный параметр и указать класс для обработки крючков жизненного цикла?
import { CrisisDetailComponent } from './crisis-detail.component';
import { CrisisListComponent } from './crisis-list.component';
import { CrisisCenterComponent } from './crisis-center.component';
import { CrisisDetailGuard } from './crisis-detail.guard';
export const CrisisCenterRoutes = [
{
path: '/crisis-center',
component: CrisisCenterComponent,
index: true,
children: [
{ path: '', component: CrisisListComponent },
{ path: ':id', component: CrisisDetailComponent, canDeactivate: [CrisisDetailGuard] }
]
}
];
а затем CrisisDetailGuard выглядит так:
import { Injectable } from '@angular/core';
import { CanDeactivate } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import { CrisisDetailComponent } from './crisis-detail.component';
@Injectable()
export class CrisisDetailGuard implements CanDeactivate<CrisisDetailComponent> {
canDeactivate(component: CrisisDetailComponent): Observable<boolean> | boolean {
return component.canDeactivate();
}
}
Я предполагаю, что вы можете сделать то же самое с крюком canActivate lifecycle. Также это похоже на решение обойти наш DI в наших крючках жизненного цикла. Таким образом, похоже, что мы не используем Брендон Робертс DI hack:)
Взгляните на этот глубокий обзор новой маршрутизации, над которой они работали Виктор Савкин: http://victorsavkin.com/post/145672529346/angular-router
ИСТОЧНИК (plnkr из статьи.. в настоящее время устарел): http://plnkr.co/edit/ER0tf8fpGHZiuVWB7Q07?p=preview
EDIT: добавлен выделенный код для соответствия router.rc3
Ответ 3
Там руководство маршрутизатора для v3 как alpha доступно https://angular.io/docs/ts/latest/guide/router.html, которое должно объяснить их.
если вы перейдете к https://angular.io/docs/ts/latest/guide/router.html#!#milestone-4-query-parameters и немного прокрутите там пример, который должен продемонстрировать это:)