Angular 6 形式 - 在 ValueChanges 后改变值
Angular 6 Form - Mutate Value after ValueChanges
我的目标是在每次值更改后改变名称值。(在我的例子中,删除名称值中所有不必要的空格)
我有一个简单的表格:
this.form = this.fb.group({
name: new FormControl(''),
description: new FormControl(''),
});
HTML
<form [formGroup]="form">
<input formControlName="name">
<input formControlName="description">
</form>
逻辑
this.form.valueChanges.subscribe(data => {
const newName = 'some mutated name';
this.form.patchValue({
...this.form.value,
name: newName,
});
// triggers an infinite loop
});
...但这会触发无限循环
通过在触发 valueChanges 事件后更改表单中的一个值,您实际上是在强制一次又一次地调用同一事件,这就是您获得循环的原因。
您可以尝试在输入中使用 keyup 事件:
<input (keyup)="onKey($event)">
然后像这样修改字符串
onKey(event: any) {
// something like this
// check event.target.value for the values and modify as needed
this.name = newName;
}
我的目标是在每次值更改后改变名称值。(在我的例子中,删除名称值中所有不必要的空格) 我有一个简单的表格:
this.form = this.fb.group({
name: new FormControl(''),
description: new FormControl(''),
});
HTML
<form [formGroup]="form">
<input formControlName="name">
<input formControlName="description">
</form>
逻辑
this.form.valueChanges.subscribe(data => {
const newName = 'some mutated name';
this.form.patchValue({
...this.form.value,
name: newName,
});
// triggers an infinite loop
});
...但这会触发无限循环
通过在触发 valueChanges 事件后更改表单中的一个值,您实际上是在强制一次又一次地调用同一事件,这就是您获得循环的原因。
您可以尝试在输入中使用 keyup 事件:
<input (keyup)="onKey($event)">
然后像这样修改字符串
onKey(event: any) {
// something like this
// check event.target.value for the values and modify as needed
this.name = newName;
}