Итак, у меня была функция в Angular с именем appUser $, ошибка гласила: «Невозможно деструктурировать свойство« uid »объекта« null », поскольку оно равно null».

  get appUser$(): Observable<AppUser> {
    return this.user$.pipe(
      switchMap(({uid})=> this.userService.get(uid)));
  }

Затем я изменил это на:

  get appUser$(): Observable<AppUser> {
    return this.user$.pipe(
      switchMap(({uid})=> {
        if({uid}){
          return this.userService.get(uid);
        } else {
          return of(null);
        }
      }));   
  }

Но все же это не работает, есть идеи?

0
Juan Esteban Rios Gonzalez 24 Июл 2020 в 00:04

2 ответа

Лучший ответ

Я не уверен, но я думаю, что у вас есть проблема с аргументом функции: я имею в виду, что аргумент равен нулю, а вы пытаетесь получить значение UID из нуля.

Попробуй так:

 get appUser$(): Observable<AppUser> {
    return this.user$.pipe(
      switchMap((obj)=> {
        if(obj && obj.uid){
          return this.userService.get(obj.uid);
        } else {
          return of(null);
        }
      }));   
 }
0
Ashot Aleqsanyan 23 Июл 2020 в 21:17

Есть ли конкретная причина, почему аргумент заключен в объект? Проблема деструктуризации проистекает из этого назначения. Вы можете попробовать использовать его напрямую

get appUser$(): Observable<AppUser> {
  return this.user$.pipe(
    switchMap(uid => this.userService.get(uid))
  );
}
1
Michael D 23 Июл 2020 в 21:16