angular - 如何将多个选择组件绑定到单个 Angular 6+ 响应式表单而不会发出重复的更改
问题描述
我需要将多个输入组件绑定到单个角度反应形式,但我有两个问题:
- 开箱即用,仅更新发生用户输入的表单
- 如果我使用 [(ngModel)] 它可以工作,但它也会触发第二个更改事件
如何在不触发第二个事件的情况下使两个选择组件与数据模型保持同步?
模板
<select [(ngModel="foo")] [formControl]="bar">
<option *ngFor="let foo in foos" [value]="foo.value"> {{foo.name}}</option>
</select>
<select [(ngModel="foo")] [formControl]="bar">
<option *ngFor="let foo in foos" [value]="foo.value"> {{foo.name}}</option>
</select>
零件
foo = '';
bar: FormControl;
...
formControl.valueChanges.subscribe(data => ...//this is called two times)
解决方案
在忽略事件的同时手动修补事件确实会将新值传播到模板中的每个绑定元素。
bar.valueChanges.subscribe(data => bar.patchValue(data , { emitEvent: false }))
推荐阅读
- python - RuntimeError:给定输入大小:(40x256x1)。计算的输出大小:(40x253x-2)。输出尺寸太小
- css - CSS 避免覆盖
- open-policy-agent - 断言集合中的每个字符串在对象中都有一个关联的键
- python-3.x - Dijkstra's algorithm in graph (Python)
- phpunit - xdebug.start_start_with_request=yes WITHOUT error if the debug client is not listening
- java - Validate a string using java 8 Stream. How to overcome "stream has already been operated upon or closed"?
- c# - 如何使用 LINQ 获取 5 个最常用的标签
- django - Django Admin method returns multiple instances instead of one
- azure-devops-server - 如何替换 Artifacts 中的包
- ruby - How to run "git blame" on a given set of files using Octokit