用于对列表进行排序的异步管道,每次出现鼠标或键盘事件时都会调用 - Angular4

Async Pipe used to sort a list, is called each time there is a mouse or keyboard event - Angular4

<div *ngFor="let student of mystudentsFiltered  | orderBy : ['-presence', 'unreadcount']>

在上面的for模板中,我使用了管道orderBy,它对列表进行排序,每次列表中的项目(学生)状态发生变化。不知何故,每当有鼠标或键盘事件时,都会重复调用此管道。

我研究了更多,发现 Angular4 中的 pipe 每次 change detection[=] 都会 executed 28=]。 Angular4 在变更检测机制中考虑以下内容:

1) 事件 - 单击、提交、滚动,

2) XHR - 从远程服务器获取数据

3) 计时器 - setTimeout()、setInterval()

当有数据更改但不是默认更改检测事件时,我如何限制调用所述管道?

您不应使用排序管道或过滤管道。正如您自己所经历的那样,这对性能不利。您可以阅读更多相关信息 here。您需要在服务中进行订购