【发布时间】:2018-07-30 14:36:14
【问题描述】:
我对 Angular 4 反应式表单有疑问。
我的申请是一个培训项目。它在 SpringBoot、mySql 数据库和 Angular4 中有一个 Backend。
这个应用程序必须将医生添加到数据库,但还必须验证:许可证号必须是唯一的。我正在使用响应式表单(不是模板驱动的)。
我试图用函数解决我的问题:
import { AbstractControl } from "@angular/forms";
export function ControlLicenseNumber(c: AbstractControl): string | null {
const formGroup = c.parent.controls;
return Object.keys(formGroup).find(license_number => c === formGroup[license_number]) || null;
}
但我不知道如何将它注入到我的 formControl:
constructor(private doctorsService: DoctorsService,
private location: Location,
private fb: FormBuilder) {
this.rForm = new FormGroup({
'name': new FormControl('', Validators.required),
'surname': new FormControl('', Validators.required),
'phone': new FormControl('', Validators.required),
'nationality': new FormControl('', Validators.required),
'email': new FormControl('', Validators.email),
'license_number': new FormControl('', [Validators.required, ControlLicenseNumber])})
}
希望你们能帮助我。问候
【问题讨论】:
-
你想把这个验证器放在哪里?我在您的表单中没有看到
license_number表单控件?另外,为什么要为表单控件设置对象? :) -
好的,我已经编辑了我的代码 :)
-
我只是在学习,这些对象来自一些教程......所以如果这是错误的做法,我会按照你说的删除它。
-
现在看起来好多了 :) 是的,表单控件应该只采用原始值。(嵌套)表单组用于对象。
-
感谢您的建议。接下来我应该做什么来验证 license_number?我浏览了整个互联网:/
标签: angular forms angular-reactive-forms angular4-forms reactive-forms