【问题标题】:angular - guards does not wait for parent resolvers to complete角度 - 守卫不等待父解析器完成
【发布时间】:2020-11-06 14:39:23
【问题描述】:

我的路由器是这样的

const routes: Routes = [{
  path: '',
  canActivate: [AuthGuard],
  resolve: {
    user: UserResolver,
  },
  children: [{
    path: 'home',
    canActivate: [HomeGuard],
    component: HomeComponent,
  }, {
    ...otherRoutes,
  }],
}];

为了授权访问,HomeGuard 需要UserResolver 检索到的数据中的数据。问题是HomeGuard 没有等待UserResolver 完成。

@Injectable({
  providedIn: 'root',
})
export class UserResolver implements Resolve<any> {

  constructor(private api: ApiService) { }

  resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<User> {
    return this.api.getUser().pipe(
      delay(1000), // simulates the api call duration
      map((user: User) => {
        console.log(user);
        return user;
      }),
    );
  }
}

在其他 stackoverflow 帖子中,人们声称解析器在导航之前解析对象,但这是否意味着守卫等待父解析器完成?

编辑。 使用守卫作为解析器可以吗?

【问题讨论】:

    标签: angular observable angular-router angular-router-guards angular-resolver


    【解决方案1】:

    根据角度文档。

    当同时指定了守卫和解析器时,在所有守卫都运行并成功之前,解析器不会执行。

    请检查angular documentation.中解释的示例

    【讨论】:

      猜你喜欢
      • 2020-06-10
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-12
      • 1970-01-01
      • 2017-11-11
      • 1970-01-01
      相关资源
      最近更新 更多