是否建议在模板表达式中调用方法?

时间:2016-12-22 13:11:41

标签: angular angular2-template angular2-forms

在Angular 2中,建议在表达式中使用组件方法吗?例如,我有以下组件

  export class AreaComponent {

    totalLength: number;
    totalBreadth: number;
    totalheight: number;
    mylocalVar: number;

    totalSqft: number;

    myMethod(): number {
        let totalArea = this.totalLength * this.totalBreadth * this.totalheight;
        let myVar = 0;
        switch (this.mylocalVar) {
            case 0:
                myVar = 8;
                break;
            case 1:
                myVar = 9;
                break;
            case 2:
                myVar = 10;
                break;
        }

        this.totalSqft = totalArea * myVar ;

        return totalArea * myVar;
    }
}

我正在area-component.html中显示这样的值

<label>{{ myMethod() }}</label>

建议在表达式中调用组件方法吗?或者,如果我使用totalSqft来显示计算

<label>{{ totalSqft }}</label>

问题在于totalSqft是如何调用myMethod(),而后续表单元素totalLengthtotalBreadthtotalheight,{{1}的值更改时}?

我正在使用模板驱动的方法。

在模板驱动方法中,此方案是否有可用的替代解决方案?

1 个答案:

答案 0 :(得分:2)

直接绑定到方法是非常不鼓励的,因为它可能会导致一些问题。

  • 每次Angular2运行变更检测时都会调用该方法。如果该方法执行一些计算密集型工作,则可能会使您的应用程序无响应。

  • 如果该方法在连续调用时返回不同的结果(例如,每次调用都返回一个新的对象实例),则更改检测会抛出错误,例如`表达式在检查后已更改。

如果您了解陷阱并知道如何避免它们,您可以在绑定中使用方法并且它们可以正常工作,但因为它很容易引起麻烦,所以在样式指南中不鼓励它。

实际上我只是试图找到风格指南规则,告诉它不鼓励但找不到它。