2016-07-05 5 views
0

я использую angular2 RC3 и angular2/маршрутизатор 3.0.0-alpha.8 сделать маршрутизатор: вот мой код:angular2 маршрут не работает

bootstrap(AppComponent, [HTTP_PROVIDERS, APP_ROUTER_PROVIDERS, AUTH_PROVIDERS, 
    { 
     provide: AuthHttp, 
     useFactory: (http:Http) => new AuthHttp(new AuthConfig({tokenName: 'jwt'}), http), 
     deps: [Http] 
    }, 
    { 
     provide: TranslateLoader, 
     useFactory: (http:Http) => new TranslateStaticLoader(http, 'app/i18n', '.json'), 
     deps: [Http] 
    }, 
    {provide: LocationStrategy, useClass: PathLocationStrategy}, 
    // use TranslateService here, and not TRANSLATE_PROVIDERS (which will define a default TranslateStaticLoader) 
    TranslateService, 
    ApiService, 
    CookieService, 
    AuthenticationService 

]).catch(err => console.error(err)); 

мой маршрутизатор:

export const routes:RouterConfig = [ 
    ...AccountRouters, 
    ...DealOverviewRouters 

]; 

export const APP_ROUTER_PROVIDERS = [ 
    provideRouter(routes) 
]; 


export const AccountRouters: RouterConfig = [ 
    { 
     path: 'account', component: AccountComponent 
    }, 
    { 
     path: 'login', component: LoginComponent 
    }, 
]; 

export const DealOverviewRouters:RouterConfig = [ 
    { 
     path: '', 
     redirectTo: '/deal-overview', 
     terminal: true 
    }, 
    { 
     path: 'deal-overview', component: DealOverviewComponent 
    } 
]; 

то в моем app.component.ts:

constructor(public translate:TranslateService, private _service: AuthenticationService, private _router: Router) { 
     this.isLogin = _service.isLogin; 
     console.log(_service.isLogin); 
} 

ngOnInit() { 
     // this._service.checkCredentials(); 
     if(!this.isLogin) { 
      console.log(1111); 
      this._router.navigateByUrl('/login'); 
     } 
} 

это действительно печать 1111 на моем журнале консоли; но перенаправление на /login не работает.

Я могу непосредственно посетить мою страницу localhost:3000/login и ничего не исправить. но только this._router.navigateByUrl('/login') не работает.

+0

У вас есть ' 'в теге' 'в' index.html'? - ** '/' важно. ** –

ответ

1

У меня были проблемы со следующим синтаксисом с новым маршрутизатором:

export const routes:RouterConfig = [ 
    ...AccountRouters, 
    ...DealOverviewRouters 
]; 

вместо вручную поместить их всех в один сопз и попробовать, что:

export const routes:RouterConfig = [ 
    { 
     path: '', 
     redirectTo: '/deal-overview', 
     terminal: true 
    }, 
    { 
     path: 'deal-overview', component: DealOverviewComponent 
    }, 
    { 
     path: 'account', component: AccountComponent 
    }, 
    { 
     path: 'login', component: LoginComponent 
    } 
]; 
Смежные вопросы