Angular имеет очень удобную функцию, которая позволяет привязывать данные непосредственно к результату вызова метода.Используя синтаксис привязки шаблона Angular для присвоения атрибута методу, результаты будут пересчитываться с каждым циклом обнаружения изменений.Хотя это может быть удобно, оно также добавляет результаты этих вычислений к стоимости каждого цикла обнаружения изменений.Эта стоимость может сильно повлиять на скорость отклика приложения, например, когда привязка к методу сочетается с ngFor.Как правило, существует два подхода к повышению производительности, когда это происходит: предварительное вычисление результатов или реализация метода как чистого канала.
Наиболее распространенная ситуация, в которой ngFor объединяется с вызовом метода, заключается в выполнениирасчет на основе каждой записи, которая отображается.Вместо того, чтобы заново вычислять отображаемое значение при каждом обнаружении изменений, часто есть возможность рассчитать дополнительные свойства по мере необходимости.Например, рассмотрим следующий код:
<ul>
<li *ngFor="let instractor of instractorList">
<span>Upccoming classes {{numClasses(instractor)}}</span>
</li>
</ul>
Простая привязка шаблона, которая выполняет numClasses для каждой записи в instructorList в каждом цикле обнаружения изменений
Класс компонента поддержки для шаблона получает свои данные с помощьюнет предварительной обработки.Следующая реализация определяет метод для вызова из шаблона
<ul>
<li *ngFor="let instractor of instractorList">
<span>Upccoming classes {{instractor.numClasses}}</span>
</li>
</ul>
В этом примере свойства объекта пересчитываются только при изменении списка.Это происходит значительно реже, чем каждый цикл обнаружения изменений, возможно, никогда больше.Это самый эффективный способ справиться с такими ситуациями, но иногда его бывает трудно достичь.