Есть ли разница в производительности между логикой в ​​выражении html и логикой в ​​свойстве класса в шаблоне Angular? - PullRequest
0 голосов
/ 29 января 2019

Я знаю, что из-за стратегии определения угловых изменений добавление функций в компонент HTML менее производительно, так как эта функция будет вызываться для каждого цикла обнаружения изменений.

Но есть ли разница между определением простого сравнения в шаблоне или заданием вместо него свойства компонента в классе и привязкой к нему?

Случай 1:

Шаблон компонента определяет сравнение:

<ng-container *ngFor="let test of testList">
    <p *ngIf="test.val > 0">Positive</p>
</ng-container>

Случай 2:

Шаблон компонента привязывается к свойству класса:

<ng-container *ngFor="let test of testList">
    <p *ngIf="test.isPositive">Positive</p>
</ng-container>

Компоненткласс предопределяет свойство:

{

    @Input() items: any[];

    ngOnInit() {
        for (let x = 0; x < this.testList.length; x++) {
            this.testList[x]['isPositive'] = this.testList[x].val > 0;
        }
    }
}

1 Ответ

0 голосов
/ 30 января 2019

Я бы ни с чем не согласился.Но если вам действительно нужно это сделать, то сделайте это в Компоненте.

Для вашего случая это не имеет значения, но когда вы вызываете метод для получения значения: например: *ngIf="isPositive(test)", это было бы очень плохо для производительности, так как будет вызываться даже при наведении на элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...