Here
这是一个有效的例子。
我们可以使用
FormGroup
statusChanges
当表单状态发生变化时通知我们的可观察属性。
// form.component.ts
@Component({
selector: "app-form",
templateUrl: "./form.component.html",
styleUrls: ["./form.component.css"]
})
export class FormComponent implements OnInit {
public nameForm: FormGroup;
@Output()
public readonly formValid$: Observable<boolean>;
constructor(private fb: FormBuilder) {
this.buildForm();
this.formValid$ = this.nameForm.statusChanges.pipe(
debounceTime(300),
map(() => this.nameForm.valid),
distinctUntilChanged()
);
}
ngOnInit() {}
private buildForm() {
this.nameForm = this.fb.group({
name: ["", Validators.required]
});
}
}
我们把它分配给
formValid$
看得见。
这个
@Output
decorator用于将状态更改传递给父组件。
我们使用
debounceTime
和
distinctUntilChanged
以限制发出的事件数。
// app.component.ts
@Component({
selector: "my-app",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.css"]
})
export class AppComponent {
public onChangeFormValidity(formValid: boolean) {
console.log(formValid);
}
}
我们约束自己
onChangeFormValidity
方法
形式有效$
输出属性。
// app.component.html
<app-form (formValid$)="onChangeFormValidity($event)"></app-form>