重置多个字段后如何仅发送一个请求?

时间:2019-04-22 11:59:57

标签: angular rxjs angular-reactive-forms

我使用反应式表单并尝试重设5个特定字段,但是我的表单会监听所有更改并发送请求。如果我重置5个字段,我的表单将发送5个请求。但在所有更改之后,我只想发送一个请求。

this.subs = form.get('city').valueChanges.subscribe(city => {
            form.get('property').reset(null, {
              emitEvent: false,
              onlySelf: true
            });

            form.get('cars').reset(null, {
              emitEvent: false,
              onlySelf: true
            });

            form.get('tariff').reset(null, {
              emitEvent: false,
              onlySelf: true
            });

            form.get('version').reset(null, {
              emitEvent: false,
              onlySelf: true
            });
          });

我做错了什么?

PS:我使用ngx-formly来组织表单。

1 个答案:

答案 0 :(得分:0)

您提供的东西之外的东西一定是导致问题的原因。像这样的东西工作正常:

 form = new FormGroup({
    a: new FormControl('a'),
    b: new FormControl('b'),
    c: new FormControl('change me'),
  });

  ngOnInit() {
    this.subs = [
      this.form.valueChanges.subscribe(v => console.log('form value change', v)),
      this.form.get('c').valueChanges.subscribe(() => { 
        console.log('reset');

        this.form.get('a').reset('d', { emitEvent: false });
        this.form.get('b').reset('e', { emitEvent: false });
      }),
    ];
  }

这是一个有效的堆叠闪电战:https://angular-awifgk.stackblitz.io