Почему мы иногда приписываем наблюдаемому, иногда нет? - PullRequest
0 голосов
/ 14 апреля 2020

Я новичок в Angular. если я ошибаюсь, скажи мне, пожалуйста. Я знаю, что если мы хотим наблюдать наблюдаемое, если что-то меняется или нет, мы должны подписаться на него. Но некоторые видео я смотрю, чтобы узнать, иногда мы подписываемся, иногда нет. например;

export class AppComponent {
   signedin$: boolean = false;


  constructor(private authService: AuthService) {
    this.signedin$ = this.authService.signedin$;  //this.authService.signedin$ is BehaviorSubject
  }



      ngOnInit() {
          // We subscribe here to watch.
         this.authService.signedin$.subscribe((signedin) => {
          this.signedin = signedin;
         });
       }

}

Однако,

export class AuthGuard implements CanLoad {


  constructor(private service: AuthService) {

  }

  canLoad(
    route: Route,
    segments: UrlSegment[]
  ): Observable<boolean> | Promise<boolean> | boolean {

   // we dont subscribe here?

   return this.service.signedin$.pipe(
      skipWhile((value) => value === null),
      take(1)
    );
  }
}

Я запутался, почему мы здесь не подписываемся? в чем разница?

1 Ответ

1 голос
/ 14 апреля 2020

Охрана маршрута в Angular может вернуть boolean, Promise типа boolean или Observable типа boolean. В вашем случае вы возвращаете Observable<boolean>, поэтому Angular ждет, пока оно не будет разрешено либо true, либо false, чтобы определить, разрешено ли ему маршрутизировать туда или нет.

https://alligator.io/angular/route-guards/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...