У меня есть список элементов в компоненте:
list: Array<MyType>;
Пользователь может выбрать и отменить выбор элементов при нажатии:
toggleItem(item: MyType) {
if (this.selection.has(item)) {
this.selection.delete(item);
return;
}
this.selection.add(item);
}
Выбранные элементы сохраняются в Set
:
selected: Set<MyType> = new Set();
Теперь мне нужно переключить класс CSS и атрибут title
в зависимости от того, выбран элемент или нет:
<button class="toggle"
type="button"
[ngClass]="{'selected': selection.has(item)}"
[title]="selection.has(item) ? 'Select' : 'Deselect'"
(click)="toggleItem(item)">
{{ item.title }}
</button>
Теперь я где-то читал, что это плохая идея - оценивать вызовы функций, так как Angular периодически будет вызывать их для обнаружения изменений, как здесь:
[ngClass]="{'selected': selection.has(item)}"
Говорят, что вместо этого лучше проверить переменную или член объекта, например:
[ngClass]="{'selected': item.selected}"
Верно ли и снижает ли производительность то, как я ее использую в настоящее время? Должен ли я добавлять свойство к каждому элементу, который устанавливается при добавлении или удалении из Set
?