角度5模板形式检测形式有效性状态的变化

时间:2018-04-05 06:57:23

标签: angular forms angular5 angular-reactive-forms angular-forms

reactive forms的方法,以便有一个组件可以监听它包含的表单的有效性状态的变化并执行某些组件的方法吗?

使用像[disabled]="#myForm.invalid"这样的templateRef很容易禁用模板中的提交按钮,但这不涉及组件的逻辑。

template forms' doc我找不到方法

3 个答案:

答案 0 :(得分:26)

如果您只想使用status而不是value,则可以使用statusChanges

export class Component {

    @ViewChild('myForm') myForm;

    this.myForm.statusChanges.subscribe(
        result => console.log(result)
    );
}

如果您甚至想要更改数据,可以订阅valueChanges的{​​{1}}并使用form检查表单的状态:

this.myForm.status

状态的可能值包括:有效无效待处理已禁用。

Here is the reference for the same

答案 1 :(得分:3)

您可以执行以下操作来检测有效性更改并根据表单是VALID还是INVALID执行方法。

this.myForm.statusChanges
  .subscribe(val => this.onFormValidation(val));

onFormValidation(validity: string) {
  switch (validity) {
    case "VALID":
      // do 'form valid' action
      break;
    case "INVALID":
      // do 'form invalid' action
      break;
  }
}

答案 2 :(得分:1)

您可以订阅整个表单更改并在那里实现您的逻辑。

@ViewChild('myForm') myForm;

this.myForm.valueChanges.subscribe(data => console.log('Form changes', data));