如何在Angular2的ngFor指令中缓存一个值?
我的组件具有activity属性,它具有计算大量数字的totalLoad()方法,但如果参数错误则返回null(否则返回包含'load'的结构)。 在ngFor中,我想访问加载属性当且仅当方法不返回null。 你会怎么做?如何在Angular2的ngFor指令中缓存一个值?
<td *ngFor="let d of monthDays"> {{activity.totalLoad(member.code, d.day).load}} h
</td>
回答:
我假设您的问题是您试图在访问某些属性时避免模板错误,对吗?
如果我是正确的,你可以使用Safe Navigation Operator
做到这一点:
<td *ngFor="let d of monthDays"> {{activity.totalLoad(member.code, d.day)?.load}} h
</td>
检查一个简单的演示使用操作:
PLUNKER
回答:
绑定到一个方法这种方式在视图中通常是一个坏主意。 每次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>
回答:
我终于做到这一点(它的两个答案的上方工会):
在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>
以上是 如何在Angular2的ngFor指令中缓存一个值? 的全部内容, 来源链接: utcz.com/qa/261636.html