Angular IntelliJ IDEA&;Typescript:重命名EventEmitter的奇怪行为
我有一个Angular2项目(IntelliJ IDEA),根据示例,我使用双向绑定: child.component.ts:Angular IntelliJ IDEA&;Typescript:重命名EventEmitter的奇怪行为,angular,intellij-idea,Angular,Intellij Idea,我有一个Angular2项目(IntelliJ IDEA),根据示例,我使用双向绑定: child.component.ts: counterValue = 0; @Output() counterChange = new EventEmitter(); @Input() get counter() { return this.counterValue; } set counter(val) { this.counterValue = val;
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++;
}
co = 4;
child.component.html:
<button (click)="decrement()">-</button>
<span>{{counter}}</span>
<button (click)="increment()">+</button>
<child-component [(counter)]="co"></child-component>
co: {{co}}
代码按预期工作-除非我更改一些变量名(两种方式:使用重构和手动查找所有引用)
我可以更改counterValue
(甚至可以通过整个代码更改变量类型)的名称,但只要重构counterChange
(据我所知,发生了2次)或counter(…)
(child.component.ts中有4次,child.component.html中有2次,parent.html中有1次)与父对象的输出绑定停止工作。但是,子组件始终按预期工作;只有父组件的co
变量不再更新
我甚至重新启动IntelliJ&npm,清除IntelliJ和browser的缓存:没有帮助
通过将名称更改回示例中的名称,输出绑定再次工作
我现在已经没有主意了,有一种可怕的感觉,就是忽略了一些基本的东西……您必须记住的一个条件是@output变量名始终是输入变量名+change 前
您必须记住的一个条件是@output变量名始终是输入变量+change 前
请告诉我们更改后的变量名是什么样子的?我想我知道可能是什么错误;)我尝试了几十种变体,从
temp
到onTest
到visible
和onVisibilityChange
(其主要目的是:模拟对话框的可见性行为)。在我凭直觉尝试以下操作之前,一切都不起作用:发射器必须是以Change
为后缀的getter和setter函数名。因此,cat123
当getter和setter与cat123Change
一起工作时……是的,这就是我要求更改变量名的原因,输出需要是输入变量名+后缀Change
OK。所以这确实是最基本的(说实话,有点烦人)。有了这些信息,我发现一些其他线程指向相同的错误,例如,这个:。非常感谢,伙计们!你让我免于发疯。请告诉我们更改后的变量名是什么样子的?我想我知道可能是什么错误;)我尝试了几十种变体,从temp
到onTest
到visible
和onVisibilityChange
(其主要目的是:模拟对话框的可见性行为)。在我凭直觉尝试以下操作之前,一切都不起作用:发射器必须是以Change
为后缀的getter和setter函数名。因此,cat123
当getter和setter与cat123Change
一起工作时……是的,这就是我要求更改变量名的原因,输出需要是输入变量名+后缀Change
OK。所以这确实是最基本的(说实话,有点烦人)。有了这些信息,我发现一些其他线程指向相同的错误,例如,这个:。非常感谢,伙计们!你让我免于发疯。此处引用:。Quote:“元素有一个名为x
的可设置属性和一个名为xChange
”的对应事件。此处引用:。Quote:“元素有一个名为x
的可设置属性和一个名为xChange
的对应事件。”。
@Input() newName: number;
@Output() newNameChange = new EventEmitter();