angular - 如何在 2 个 Angular 组件之间共享表单验证
问题描述
我有带有用于添加/编辑功能的表单的组件。Add 和 Edit 的表单字段是相同的,因此我想在每个字段中重复使用我的表单验证。我在导出的 Add 类中有以下验证设置:
export class AddCarriersComponent implements OnInit {
addCarrierForm: FormGroup;
constructor(private fb: FormBuilder) {
this.createForm();
}
createForm() {
this.addCarrierForm = this.fb.group({
carrierName: ['', Validators.required],
contactNumber: ['', Validators.required],
addressLineOne: ['', Validators.required],
addressLineTwo: [''],
city: ['', Validators.required],
state: ['', Validators.required],
county: ['', Validators.required],
zip: ['', Validators.required],
contactName: ['', Validators.required],
contactEmail: ['', [Validators.required, Validators.email]],
phone: [''],
mobile: ['', Validators.required],
carrierAcceptanceDays: [''],
rateRoundingOptions: ['', Validators.required],
subscriptionPlanName: ['', Validators.required],
subscriptionPlanDuration: ['', Validators.required],
subscriptionPlanEffectiveDate: ['', Validators.required]
})
}
ngOnInit() {
}
}
如何与我的编辑组件共享这些验证要求?
解决方案
创建一个类:
export class Carrier {
name: string;
// etc.
toFormGroup() {
return {
name: [this.name, Validators.required],
// etc.
}
}
}
现在,您可以在组件中管理它:
carrier = new Carrier();
form = this.formBuilder.group(this.carrier.toFormGroup());
这使您可以将所有对象逻辑集中到一个类中。例如,您可以添加一个persist()
对后端进行 HTTP 调用的方法,或者类似的东西。
推荐阅读
- html - 第一个 HTML 项目 - 损坏的图像
- delphi - 将 OnMouseDown 事件处理程序添加到 VCL 组件?
- sql-server - 使用 TSQL 动态编写数据脚本
- nginx - Nginx 位置块被忽略
- python - 随机森林的手动 k 折交叉验证
- swift - iOS 13 透明工具栏
- python - 为什么 PyTrends/Pandas 程序会抛出错误代码:raise ValueError("No objects to concatenate") ValueError: No objects to concatenate?
- unity3d - 实例化不能与 navmesh 统一工作
- python - unittest python模块找不到模块
- python - 如何将列表转换为字典并连接值?