canActivate 返回 Promise 或 Observable 块更改检测
canActivate returning Promise or Observable blocks Change detection
当我添加 canActivate 时,return 是 Observable 或 Promise(在本例中是 promise),路由正常工作,但它似乎阻止了(点击)事件,管道无法正常工作等等...只要我将 canActivate 设置为 return true,这些功能就会全部起作用。有什么建议吗?
可以激活
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean | Promise<boolean> {
return Stamplay.User.currentUser()
.then((res) => {
if (res.user) {
return true;
} else {
this.router.navigate(['/login']);
return false;
}
}).catch(() => {
this.router.navigate(['/login']);
return false;
});
例如,material 搜索不适用于 canActivate,但当我只是 return true 或取消 canActivate 时,它会完美运行。
根据我的评论,return Promise.resolve(true)
和 Promise.reject(false)
而不是 return 真假。
当我添加 canActivate 时,return 是 Observable 或 Promise(在本例中是 promise),路由正常工作,但它似乎阻止了(点击)事件,管道无法正常工作等等...只要我将 canActivate 设置为 return true,这些功能就会全部起作用。有什么建议吗?
可以激活
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean | Promise<boolean> {
return Stamplay.User.currentUser()
.then((res) => {
if (res.user) {
return true;
} else {
this.router.navigate(['/login']);
return false;
}
}).catch(() => {
this.router.navigate(['/login']);
return false;
});
例如,material 搜索不适用于 canActivate,但当我只是 return true 或取消 canActivate 时,它会完美运行。
根据我的评论,return Promise.resolve(true)
和 Promise.reject(false)
而不是 return 真假。