在数据加载时无法读取未定义的 属性
cannot read property of undefined on data loading
authState$ 是一个
类型的 Observable 变量
{
...
isAuthenticated: boolean;
user: User | null;
}
如果用户通过身份验证,则在 ngrx effect init 上启动用户 属性。
错误是模板下面的代码 return 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 : '' }}
但事实证明它没有监听更改,我必须重新加载页面
您可以按如下方式更改它,以这种方式创建的订阅较少并且 div 块将不会显示在 DOM 中,除非用户经过身份验证,safe operator 是安全获取的方式检查讨厌的属性:
<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
属性 没有为经过身份验证的用户填充
authState$ 是一个
类型的 Observable 变量{
...
isAuthenticated: boolean;
user: User | null;
}
如果用户通过身份验证,则在 ngrx effect init 上启动用户 属性。
错误是模板下面的代码 return 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 : '' }}
但事实证明它没有监听更改,我必须重新加载页面
您可以按如下方式更改它,以这种方式创建的订阅较少并且 div 块将不会显示在 DOM 中,除非用户经过身份验证,safe operator 是安全获取的方式检查讨厌的属性:
<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
属性 没有为经过身份验证的用户填充