2

我们应该不允许在属性绑定中增加或设置值。在官方 Angular2 文档中,他们声称:

该表达式可以调用类似 getFoo() 的方法。只有你知道 getFoo() 是做什么的。如果 getFoo() 改变了一些东西,而你碰巧绑定到了那个东西,你就会冒着不愉快的经历的风险。Angular 可能会或可能不会显示更改后的值。Angular 可能会检测到更改并抛出警告错误。一般来说,坚持数据属性和返回值的方法,不再做任何事情。

但是,我做了一个示例,我实际上覆盖了该值并增加了它,然后将其设置为 DOM 属性,并且一切正常。这是我的代码:

export class AppComponent {
  myIndex: number = 0;

  overrideMe(newValue:string) {
    this.myIndex = parseInt(newValue);
    this.myIndex++;
    return this.myIndex;
  }
}

和 HTML:

{{myIndex}}

<input type="text" [value]="overrideMe(10)" />

从理论上讲,这应该是一种不好的做法并且可以避免,但在现实生活中这同样有效。所以我的问题是,什么是正确的情况来表示这些事情不应该做?

4

0 回答 0