Angular SSR Универсальная асинхронная защита - PullRequest
0 голосов
/ 28 мая 2020
• 1000 1005 *
 canLoad(): Observable<boolean> {
    return this.authCheckGuardService.getAuthWhenReady()
        .pipe(
            tap((isNotAuthenticated: boolean) => {
                console.log(isNotAuthenticated);
                if (!isNotAuthenticated) {
                this.router.navigate(['']);
            }
        }))
}

и помощник службы:

 getAuthWhenReady() {
return this.isAuthLoading$
    .pipe(tap((loaded) => {
      if(!loaded) {
        this.store.dispatch(new CheckUser());
      }
    }), filter(x => x), take(1), switchMap((res) => {
      return this.isAuthenticated$.pipe(take(1))
    }));

}

Я пытаюсь быть уверенным, что наблюдаемое завершено к take(1), но оно все еще не работает (когда я посетить конкретный маршрут он замораживается или идет в бесконечность l oop)

Итак, как вы управляете асинхронными охранниками в своих универсальных приложениях?

...