Javascript 通过ngModel更改对象时不会触发Setter
我有以下代码:Javascript 通过ngModel更改对象时不会触发Setter,javascript,angular,typescript,Javascript,Angular,Typescript,我有以下代码: set dynamicData(val) { this.editableData.emit(val); } get dynamicData() { return this.formsData; } 如果我从组件中设置dynamicData值,则会触发setter。 但是如果我使用[(ngModel)]从输入设置dynamicata,则dynamicata的实际值会更改,但由于某种原因,设置器不会触发 以下是输入: <input type="tex
set dynamicData(val) {
this.editableData.emit(val);
}
get dynamicData() {
return this.formsData;
}
如果我从组件中设置dynamicData
值,则会触发setter。
但是如果我使用[(ngModel)]
从输入设置dynamicata
,则dynamicata
的实际值会更改,但由于某种原因,设置器不会触发
以下是输入:
<input type="text" name="dynamicDataSender"
*ngIf="someCondition"
[(ngModel)]="dynamicData.sender"/>
我遗漏了什么吗?您引用的是[(ngModel)]=“dynamicData.sender”
而不是dynamicData
。你应该引用这个对象
如果dynamicata需要成为事件发射器,则不应将其用作属性绑定,而应使用(onChange)=“modelChanged($event)”
处理程序,在该处理程序中可以向dynamicata发出新值。(modelChanged(value){this.dynamicData.emit(value);}
)并使用其他一些属性作为ngModel 语法只能设置数据绑定属性。如果您需要做更多或不同的事情,您可以编写扩展表单
<input type="text" name="dynamicDataSender" #ref
*ngIf="someCondition" [ngModel]="dynamicData.sender" (ngModelChange)="dynamicData(ref.value)"/>
这是因为您正在设置
dynamicata.sender
,而不是dynamicata
本身。更改为dynamicATA
的内部属性,这意味着将调用getter。
debouncer= new Subject();
constructor() {
this. debouncer
.debounceTime(1000)
.subscribe((val) =>{
console.log(val);
this.editableData.emit(val);
});
}
set dynamicData(val) {
this.debouncer.next(value);
}