访问父组件中的角度ngform状态

Khi*_*han 1 forms validation angular

这是父HTML

<parent-component>
    <child></child>
    <button type="submit" [disabled]="!childForm.valid">
</parent-component>
Run Code Online (Sandbox Code Playgroud)

这是儿童HTML

<child>
    <form #childform=ngform>
      <input required type="text">
    </form>
</child>
Run Code Online (Sandbox Code Playgroud)

我需要访问父组件中的子窗体状态

Fre*_*din 7

儿童模板:

<form #childform=ngForm>
  <input required type="text">
</form>
Run Code Online (Sandbox Code Playgroud)

子组件:

export class ChildComponent implements OnInit {

  @Output() validityChange = new EventEmitter<boolean>();
  @ViewChild('childform') form: NgForm;
  private validStatus: boolean;

  ngOnInit() {
    if (!this.form) return;
    this.form.valueChanges
      .subscribe(_ => {
        if(this.validStatus !== this.form.valid) {
          this.validStatus = this.form.valid;
          this.validityChange.emit(this.form.valid);
      });
  }
}
Run Code Online (Sandbox Code Playgroud)

父模板:

<child (validityChange)="childFormValid = $event"></child>
<button type="submit" [disabled]="!childFormValid">
Run Code Online (Sandbox Code Playgroud)

父组件:

export class ChildComponent implements OnInit {

  private childFormValid: boolean;

  ...
}
Run Code Online (Sandbox Code Playgroud)