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