我的组件具有activity属性,该属性具有计算大量数字的totalLoad()方法,但如果参数错误,也可以返回null(否则返回包含' load'的结构)。 在ngFor中,当且仅当方法不返回null时,我才想访问加载属性。 你会怎么做?
<td *ngFor="let d of monthDays">
{{activity.totalLoad(member.code, d.day).load}} h
</td>
答案 0 :(得分:2)
我从您的问题中假设您在尝试访问某些属性时试图避免模板错误,对吧?
如果我是对的,你可以使用Safe Navigation Operator
:
<td *ngFor="let d of monthDays">
{{activity.totalLoad(member.code, d.day)?.load}} h
</td>
使用运算符检查一个简单的演示:
答案 1 :(得分:1)
在视图中以这种方式绑定到方法通常是个坏主意。 每次Angular运行更改检测时,都会执行此方法。
更好的方法是将计算值存储在数组中,并在此数组上使用ngFor
。
ngOnInit() {
this.totalLoads = this.monthDays
.map(md => this.activity.totalLoad(this.member.code, md.day).load);
}
<td *ngFor="let td of totalLoads">
{{td}} h
</td>
答案 2 :(得分:0)
我终于这样做了(这是上面两个答案的结合):
在component.ts中:
ngOnInit() {
this.totalLoads = this.monthDays
.map(md => this.activity.totalLoad(this.member.code, md.day).load);
}
在component.html中:
<td *ngFor="let td of totalLoads">
{{td ? td+" h":""}}
</td>