【发布时间】:2019-06-11 06:35:04
【问题描述】:
我有一个反应形式。当我输入并停止 3 秒时 - 它应该是 console.log(form.value)。但是当我点击submit 时——console.log(form.value) 应该立即被记录,并且还可以防止之前等待 3 秒的console.log()。在我打字之后 - 而不是按 submit - 它应该在 3 秒后再次 console.log()。
我是 RxJs 的新手。我刚刚弄清楚如何使用debounceTime() 运算符制作第一部分。但我无法理解如何将提交事件“注入”表单流并阻止它来自console.log();
component.html
<form [formGroup]="form" (ngSubmit)="onSubmit()">
<input type="text" formControlName="name" placeholder="name"><br>
<input type="text" formControlName="age" placeholder="age"><br>
<button>Save</button>
</form>
component.ts
export class AppComponent implements OnInit {
form: FormGroup;
constructor(private fb: FormBuilder) {}
ngOnInit() {
this.form = this.fb.group({
'name': [],
'age': []
});
this.form.valueChanges.pipe(
debounceTime(3000)
).subscribe(value => console.log(value));
}
onSubmit() {
console.log(this.form.value);
}
}
预期行为:
当我打字时,停下 2 秒 - 没有任何反应,如果我停下 3 秒或更长时间,然后console.log(form.value);
当按下submit 时应立即console.log(form.value) 并取消先前对第一个案例的等待。
【问题讨论】:
标签: rxjs angular2-forms