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 真假。