我们应该不允许在属性绑定中增加或设置值。在官方 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)" />
从理论上讲,这应该是一种不好的做法并且可以避免,但在现实生活中这同样有效。所以我的问题是,什么是正确的情况来表示这些事情不应该做?