canActivate返回Promise或Observable块更改检测

时间:2017-06-09 12:26:35

标签: angular angular2-routing canactivate

当我添加一个返回Observable或Promise(在这种情况下是一个promise)的canActivate时,路由正常工作,但似乎阻止了诸如(点击)事件,管道无法正常工作等等......一旦我使canActivate返回true,这些函数都可以正常工作。有什么建议吗?

canActivate

  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;
    });

For example, the material search doesn't work with canActivate/

例如,素材搜索不适用于canActivate,但在我返回true或将canActivate取出时效果很好。

1 个答案:

答案 0 :(得分:1)

Following my comment, return Promise.resolve(true) and Promise.reject(false) instead of returning true and false.