не может прочитать свойство undefined при загрузке данных - PullRequest
1 голос
/ 29 апреля 2020

authState $ - это наблюдаемая переменная типа

{
    ...
    isAuthenticated: boolean;
    user: User | null;
}

Пользовательское свойство инициируется при ngrx эффекте init, если пользователь аутентифицирован.

ошибка в том, что код ниже в шаблоне возвращает cannot read property fullName of undifined

<div *ngIf="(this.authState$ | async).isAuthenticated" >
    {{ (this.authState$ | async).user.fullName || '' }}
</div>

Я попробовал это решение

{{ (this.authState$ | async).user ? (this.authState$ | async).user.fullName : '' }}

, но оказалось, что оно не прослушивает изменения, и мне нужно перезагрузить страницу

1 Ответ

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

Вы можете изменить его следующим образом: меньшее количество подписок, созданных таким образом, и блок DIV не будет отображаться в DOM, если пользователь не аутентифицирован, безопасный оператор - это способ безопасно проверить неприятные свойства:

<ng-container *ngIf="authState$ | async as authState">
  <div *ngIf="authState?.isAuthenticated" >
    {{ authState?.user?.fullName || '' }}
  </div>
</ng-container>

или сохраните его следующим образом:

<div *ngIf="(this.authState$ | async)?.isAuthenticated" >
    {{ (this.authState$ | async)?.user?.fullName || '' }}
</div>

Хотя я также рекомендовал бы проверить, почему свойство user не заполняется для аутентифицированных пользователей

...