html表达式中的逻辑与Angular模板中的类属性中的逻辑之间在性能上有区别吗?

时间:2019-01-29 20:33:33

标签: angular performance angular2-changedetection

我知道由于Angular变更检测策略,在组件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 :(得分:0)

我不会接受上述任何一个。 但是,如果确实需要执行此操作,则可以在组件中执行。

对于您的情况,这无关紧要,但是当您调用获取值的方法时: 例如:lambda,这会降低性能,因为即使在元素悬停时也会被调用。