2017-02-02 4 views
1

Моих маршрутов являются: -Как добавить условие в маршрутизаторах angular2

const appRoutes: Routes = [ 
{ path: 'alert/:id', component: AlertDetailComponent }, 
{ path: 'alerts', component: AlertsComponent }, 
{ path: 'dashboard', component: EriskDashboardComponent }, 
{ path: '', redirectTo: '/dashboard', pathMatch: 'full' }, 
{ path: 'login', component: LoginComponent }, 
{ path: 'logout', component: LogoutComponent }, 
]; 

Я хочу, что если локальное хранение содержит token_id того ./login перенаправлять EriskDashboardComponent

+1

Вы можете добавить [CanActivate] (https://angular.io/docs/ts/latest/guide/router.html#can-activate-guard) охранник в 'login' маршруту. Внутри охранника проверьте localStorage и перенаправьте соответствующим образом. Проверьте документы, у них есть примеры кода и все такое. – AngularChef

+0

вы можете это объяснить? –

+0

Вы можете проверить состояние в охраннике, а затем перейти к альтернативному маршруту 'this.router.navigate (...)' –

ответ

3

Добавить CanActivate охранник в вашем 'login' маршруте :

{ path: 'login', component: LoginComponent, canActivate: [CheckToken] } 

Внутри охранника (названный CheckToken в моем примере), проверьте LocalStorage и перенаправлять нас эр:

// check-token.service.ts 
import { Injectable }  from '@angular/core'; 
import { CanActivate, Router } from '@angular/router'; 

@Injectable() 
export class CheckToken implements CanActivate { 
    constructor(private router: Router) { 
    canActivate() { 
    const myToken = ...; // check localStorage 
    if (myToken) { 
     this.router.navigate(['/dashboard']); 
    } 
    } 
} 
+0

код не запускается, он вызывает ошибку. Класс «CheckToken» неправильно реализует интерфейс «CanActivate». Типы свойств 'canActivate' несовместимы. –

+0

Мой код не должен работать дословно ... Я просто представил его в качестве плана. Пожалуйста, ознакомьтесь с документацией для полного рабочего примера (подсказка: метод canActivate должен что-то вернуть). – AngularChef

 Смежные вопросы

  • Нет связанных вопросов^_^