在Angular中从模板引用属性或获取方法的性能

时间:2018-09-16 11:32:03

标签: angular

我对Angular的性能有疑问。 引用公共属性和在组件中定义的吸气剂之间在性能上有区别吗?

示例:
我有一个模板,它引用在这样的组件中定义的isActivate

<div *ngIf="isActivate">Do stuff...</div>

在组件中:

export class TestComponent {
    public isActivate: boolean;

但是它可以有一个吸气剂:

public get isActivate(): boolean {
    return true;
}

在性能方面,哪个更好,为什么?

1 个答案:

答案 0 :(得分:0)

在每个“变化检测”角度上,比较先前和当前的边界值。在function不执行任何操作之前,getter(即函数)与属性访问之间的性能差异不存在。如果我们要优化它-通过使用memoize pure pipe函数。

另一种更通用的解决方案是创建apply管道:

@Pipe({
  name: 'apply',
})
export class ApplyPipe implements PipeTransform {
  transform<T, U extends any[]>(fn: (...fnArgs: U) => T, ...args: U): T {
    return fn(...args);
  }
}

// TS
foo = {};
computeSmth(foo){
  // some computation
  return 'result';
}

// HTML
{{ computeSmth | apply : foo}}

PS,我们也可以使用装饰器来记住吸气剂功能