我在 Angular 中创建了一个标签输入字段作为自己的组件,但遇到了一个问题。组件中使用的输入字段错误地绑定了它的值。
每当我在输入字段中键入时,都会使用输入字段ngModel
的值调用 -setter。这是为什么?假设输入字段绑定到 filter 属性(也是如此)而不是 ngModel 属性。
模板:
<div class="si-tags-input">
...
<input [(ngModel)]="filter"/>
</div>
逻辑:
export class SITagsInputComponent {
filter = "";
selectedTags = [];
@Input() get ngModel(){
return this.selectedTags;
}
@Output() ngModelChange = new EventEmitter();
set ngModel(val){
console.log("val", val);
this.selectedTags = val;
this.ngModelChange.emit(this.selectedTags);
}
...
}
我使用这样的组件:
<si-tags-input [(ngModel)]="target_locations" [available-tags]="locations" ngDefaultControl></si-tags-input>