【发布时间】:2017-06-19 14:09:25
【问题描述】:
我目前正在阅读 Angular 2 中的两种方式数据绑定并阅读这篇文章。
https://blog.thoughtram.io/angular/2016/10/13/two-way-data-binding-in-angular-2.html
在本文中,有一个带有@Input 和@Output 的子组件,它允许将组件内的值绑定到其父级上的变量。
export class CustomCounterComponent {
counterValue = 0;
@Output() counterChange = new EventEmitter();
@Input()
get counter() {
return this.counterValue;
}
set counter(val) {
this.counterValue = val;
this.counterChange.emit(this.counterValue);
}
decrement() {
this.counter--;
}
increment() {
this.counter++;
}
}
父 HTML
<custom-counter [(counter)]="counterValue"></custom-counter>
<p><code>counterValue = {{counterValue}}</code></p>
所以对我来说,我明白为什么需要 @Input - 但是我不明白 @Output counterChange 是如何工作的,因为它甚至没有被父级上的任何东西订阅。但是,有必要将它放在那里并且将其称为 counterChange 才能工作。
文章作者说
接下来我们需要做的是引入一个@Output() 事件 同名,加上 Change 后缀。我们想发出那个事件, 每当计数器属性的值发生变化时。让我们添加一个 @Output() 属性并在设置器中发出最新值 拦截器:
为什么我们需要同名加改变后缀?这是我不知道的某种 Angular 约定吗?我只是想弄清楚我错过了哪个基本概念,以便了解它是如何工作的。
如果有帮助,我这里有一段代码。
【问题讨论】:
标签: javascript angular data-binding