are reactive forms the way to go in order to have a component that can listen for changes in the validity status of the form it contains and execute some compoment\'s method
You can do something like this do detect a validity change and execute a method based on whether the form is VALID or 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;
}
}
If you want to get only the status and not the value you can use statusChanges:
export class Component {
@ViewChild('myForm') myForm;
this.myForm.statusChanges.subscribe(
result => console.log(result)
);
}
If you even want data changes, you can subscribe to the valueChanges of the form and check the status of the form using this.myForm.status:
export class Component {
@ViewChild('myForm') myForm;
this.myForm.valueChanges.subscribe(
result => console.log(this.myForm.status)
);
}
Possible values of status are: VALID, INVALID, PENDING, or DISABLED.
Here is the reference for the same
You can subscribe to the whole form changes and implement your logic there.
@ViewChild('myForm') myForm;
this.myForm.valueChanges.subscribe(data => console.log('Form changes', data));