请查看以下代码
<div id="safetyDiv" (scroll)="onScrollSafety()">
<ul>
<li *ngFor="let message of messages; let i = index;">
<div *ngIf="foo()">{{message}}</div>
</li>
</ul>
</div>
为什么滚动safetyDiv
调用foo()
?我猜它与变更检测有关。出于测试目的,我删除了滚动事件侦听器,然后在滚动时未调用foo()
。但是,就我而言,需要通知滚动事件。
因此,有没有一种方法可以让我监听滚动事件而无需始终调用foo()
?
您还可以查看我创建的堆栈闪电,其中显示了所描述的行为:https://stackblitz.com/edit/angular-rotj54
答案 0 :(得分:0)
通常,如果您遍历对象数组
messages.forEach(x=>x.foo=this.foo(x))
//and use <div *ngIf="message.foo">
如果是字符串或数字数组,请使用辅助变量
foos=messages.map(x=>this.foo(x))
//and use <div *ngIf="foos[i]>