elz*_*zoy 67 variables null properties angular
我有一个关于检查对象中是否存在某个字段的问题.
我想打印用户拥有的所有类别,所以我正在做这样的事情:
<ul *ngIf="user.categories.length > 0" *ngFor="#category of user.categories">
<li>
{{category.name}}
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
原因?所有数据都是正确打印的,但我在Web控制台中遇到如下错误:
Cannot read property 'name' of null
Run Code Online (Sandbox Code Playgroud)
但当我做类似的事情时:
<ul *ngIf="user.categories.length > 0" *ngFor="#category of user.categories">
<li *ngIf="category">
{{category.name}}
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
那一切都没问题.
我做错了什么或者我每次都要检查一下吗?你有过这样的问题吗?
Gün*_*uer 196
基本用法
使用安全导航操作员
{{category?.name}}
Run Code Online (Sandbox Code Playgroud)
然后name只有在category没有时才会被阅读null.
排列
这仅适用于.(取消引用)运算符.对于您可以使用的阵列
{{records && records[0]}}
Run Code Online (Sandbox Code Playgroud)
另请参见Angular 2 - 无法使用上下文读取未定义错误的属性"0"错误上下文:[object Object]
异步管道
使用async管道,它可以像使用一样
{{(chapters | async)?.length
Run Code Online (Sandbox Code Playgroud)
ngModel
随着ngModel目前需要将其拆分成
[ngModel]="details?.firstname" (ngModelChange)="details.firstname = $event"
Run Code Online (Sandbox Code Playgroud)
*ngIf
另一种方法是始终将视图的一部分包装起来,*ngIf="data"以防止部件在data可用之前完全呈现以防止取消引用错误.
| 归档时间: |
|
| 查看次数: |
62971 次 |
| 最近记录: |