<div *ngFor="let student of mystudentsFiltered | orderBy : ['-presence', 'unreadcount']>
在上面的for
模板中,我使用了管道orderBy
,每当列表中的项目(学生(的状态发生变化时,它都会对列表进行排序。不知何故,每次出现鼠标或键盘事件时都会重复调用此管道。
我研究了更多,发现 Angular4 中的管道每次有变化检测时都会执行。Angular4 在更改检测机制中将以下内容视为:
1( 事件 - 点击、提交、滚动、
2( XHR - 从远程服务器获取数据
3( 计时器 - setTimeout((, setInterval((
如何限制在存在数据更改而不是默认更改检测事件时调用所述管道?
不应使用订单管道或筛选器管道。正如您自己所经历的那样,这对性能不利。您可以在此处阅读有关它的更多信息。您需要在服务中进行排序