Это раздражающая проблема, если я могу так сказать... Если я использую метод в шаблоне, он будет вызываться так много раз.... из-за обнаружения изменений в Angular.
3511 сообщений (вызовов методов) всего за 30 секунд, всего для 12 элементов.
как мой код выглядит изначально: html:
<td *ngFor="let value of values"
class="value">
<span [ngStyle]="getValueStyle(value)">{{value}}</span>
</td>
.ts:
getValueStyle(value: any) {
console.log(value);
let stringValue = value.toString();
if (!stringValue.includes('%')) return '';
let index = stringValue.indexOf('%');
let formatedNumber = stringValue.substring(0, index).replace(/\s/g, '');
let numberValue = Number(formatedNumber);
if (Number.isNaN(numberValue) || numberValue == 0) {
return {'color': '#585858'};
} else if (numberValue > 0) {
return {'color': '#009900'};
} else if (numberValue < 0) {
return {'color': '#cc0000'};
}
return '';
}
Чтобы не использовать функцию в шаблоне, я объявил 3 класса в .scss и сделал проверку в .html (может это сделать, потому что это простое сравнение)
<td *ngFor="let value of values"
class="value">
<span [ngClass]="!value.includes('%')
? 'neutral'
: value.includes('-')
? 'negative'
: (value == '0')
? 'neutral'
: 'positive'">{{value}}</span>
</td>
Но если мне нужно вычислить динамический стиль, как избежать этих повторных вызовов? В любом случае, я не знаю, является ли использование ngClass хорошим решением вместо ngStyle, потому что теперь я не вижу в консоли, сколько раз это будет выполняться. Каков наилучший способ решить эту проблему?
pure
pipe? dzone.com/articles/ - person MoxxiManagarm   schedule 21.10.2019