我正在尝试在启动时导航到AppComponent中的另一个路径,但它似乎不起作用。在我的app.component中,我试图在我的ngOnInit方法中导航:
export class AppComponent implements OnInit {
constructor(private _router: Router) {
}
ngOnInit() {
console.log("IN ngOnInit!!!!!!!!!!!!!!!!!!!!");
this._router.navigate(["/login"]).then( () => console.log("DONE Navigation!!!!!!!!!!!!!!!!!!!!")).catch(err => console.log("Error!!!!!: " + err));
console.log("GOING OUT ngOnInit!!!!!!!!!!!!!!!!!!!!");
}
}
在我的main.ts中,我引导组件:
bootstrap(AppComponent, [
APP_ROUTER_PROVIDERS
]).then(() => console.log("DONE BOOTSTRAP"));
控制台输出是:
IN ngOnInit!!!!!!!!!!!!!!!!!!!!
GOING OUT ngOnInit!!!!!!!!!!!!!!!!!!!!
DONE Navigation!!!!!!!!!!!!!!!!!!!!
DONE BOOTSTRAP
我的猜测是无法执行导航,因为APP_ROUTER_PROVIDERS的引导程序不完整。是否有任何可以挂钩的事件,以便我可以在引导完成后调用导航?我在Angular 2 RC4上。
提前致谢!
答案 0 :(得分:2)
理想情况下,您应该负责重定向到角度路由器本身。当没有特定路线匹配时,添加一条负责将''
(空白)重定向到/login
页面的路线。
{
path: '', //blank will redirectTo `/login`
redirectTo: '/login',
pathMatch: 'full'
},
答案 1 :(得分:1)
目前您无法在主要组件的OnInit中调用导航功能。这是由于此https://github.com/angular/angular/blob/master/modules/@angular/router/src/common_router_providers.ts#L54-L61
导致的错误在github上打开一个问题:https://github.com/angular/angular/issues/9101
目前,快速解决方法是将导航调用放入setTimout()
功能。