Angular IntelliJ IDEA&;Typescript:重命名EventEmitter的奇怪行为

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;

我有一个Angular2项目(IntelliJ IDEA),根据示例,我使用双向绑定:

child.component.ts:

  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();