angular - 带有子表单组件的Angular父表单,如何让子知道何时提交父?
问题描述
我以这种方式使用带有子组件表单的父表单。https://stackoverflow.com/a/59310301/15435022
当父表单提交了按钮 Ng 时,如何让子组件知道?parentForm 变量在子组件中作为变量。有没有办法,我可以将 parentFormGroup 作为事件告诉?
当子窗体知道时,我想计算一些复杂的值(不在窗体中),并将它们发送给 parentComponent。
父组件:
ngOnInit() {
this.parentForm = this.fb.group({
'customerName': [null, [Validators.required]],
'phoneNumber': [null, [Validators.required]],
})
<form [formGroup]="parentForm" (ngSubmit)="onSubmit()">
<app-child [form]="parentForm"></app-child>
<button type="submit">Purchase</button>
</form>
子组件:
需要知道在这个组件中,parentForm是什么时候提交的。
@Input() parentForm: FormGroup;
ngOnInit() {
this.parentForm.addControl('address', new FormControl(Validators.required));
this.parentForm.addControl('city', new FormControl(Validators.required));
}
解决方案
您可以在子组件内注入FormGroupDirective,然后在子组件内订阅 ngOnSubmit 事件以监听父表单提交。
child.component.ts
constructor(private fg: FormGroupDirective){
this.fg.ngSubmit.subscribe(()=>{
console.log('listen submit');
})
}
推荐阅读
- c# - IDE 中的 C# WPF 预览与调试时不同
- android - 如何使用 MVP 模式将数据从 Fragment 发送回 Activity
- visual-studio - 在 Docker 容器中运行时的 .NET Core 分析
- machine-learning - 用于估计欧几里德颜色距离的神经网络类型?
- r - 使用 R 循环返回 n<-1:30 的矩阵的 Collatz 猜想
- rust - 是否可以从子结构调用父结构的方法?
- javascript - 如何在javascript中扩展父类的实例变量
- sql - SQL 中的多对多关系。不能得到多个结果
- c# - 从程序集订阅方法到我的应用程序中的事件
- angular - How to know if Angular 7 component is currently loaded without using a timeout and no function on navigation