【发布时间】:2019-04-26 21:47:13
【问题描述】:
在我的角度路由模块中,当它是默认主页时,我使用基本导航,现在在某些情况下,我想决定导航哪条路线。这就是我的应用路由的外观。
{ path: '', redirectTo: 'home1', canActivate: [homepageGuard], pathMatch: 'full' },
{ path: 'home1', loadChildren: './lazyloadedmodule1' },
{ path: 'home2', loadChildren: './lazyloadedmodule2' },
{ path: 'home3', loadChildren: './lazyloadedmodule3' },
{ path: 'basehome', loadChildren: './lazyloadedmodule4' }
现在在我的路由守卫中,我这样调用订阅。
canActivate(): Observable<any> | boolean {
return this._myService.getCurrentApp().subscribe(
(r) => {
if(r === 'app1'){
//navigate to app1homepage
} else if (r === 'app2') {
//navigate to app2homepage
} else {
// navigate to base homepage
}
},
(e) => {
console.log(e);
return false;
}
);
}
这就是我调用 API 时服务的外观。
public getCurrentApp(): Observable<any> {
return this.http.get(this.apiBaseUrl + 'getApp').pipe(
catchError((err: HttpErrorResponse) => {
return throwError(err.error.errorMessage);
}));
}
首先,路由守卫没有将值作为订阅,因为我相信它只期望一个布尔值,但我会以字符串的形式得到响应。如何确保在第一个页面加载期间调用 API 并相应地重定向它?
【问题讨论】:
标签: javascript angular angular-router angular-router-guards