【发布时间】:2018-01-15 01:10:34
【问题描述】:
我目前正在开发一个 Angular 5 应用程序并坚持进行验证。我有一个包含姓名、电子邮件、性别和地址的表格。我使用FormGroupname 将城市、州、国家/地区分组到地址中。我在组件中编写了一个for 循环来循环表单中的valueChanges,并使用Validators 抛出错误。以下是我的代码:
export class RegistrationComponent implements OnInit {
registerForm: FormGroup;
constructor(private fb: FormBuilder) { }
ngOnInit() {
this.createLoginForm();
}
validationMessages = {
name: {
required: 'Name is required.',
},
email: {
required: 'Email is required.',
},
gender: {
required:'Gender is required.'
},
city: {
required: 'City is required.',
},
state: {
required: 'State is required.',
},
country: {
required: 'Country is required.',
},
registerFormErrors = {
name: '',
email: '',
gender: '',
address:{
city:'',
state:'',
country:'',
}
}
createLoginForm(): void {
this.registerForm = this.fb.group({
name: ['', [Validators.required]],
email: ['', [Validators.required]],
gender: ['',[Validators.required]],
sur_name: ['', [Validators.required]],
address: this.fb.group({
city: ['',[Validators.required]],
state: [''],
country: ['',[Validators.required]],
})
this.registerForm.valueChanges.subscribe(data =>
this.validateRegisterForm(data));
validateRegisterForm(data: any): void {
if (!this.registerForm) return;
for (let field in this.registerFormErrors) {
this.registerFormErrors[field] = '';
let input = this.registerForm.get(field);
if (input.invalid && input.dirty || input.invalid) {
for (let errors in input.errors) {
this.registerFormErrors[field] = this.validationMessages[field][errors];
}
}
}
}
在上面的代码中,我可以遍历registerFormErrors,但问题在于地址。由于地址是一个对象,我无法循环地址组字段。如何修改我的 for 循环,以便我可以遍历所有值以及地址对象。
任何帮助将不胜感激。提前致谢。
【问题讨论】:
标签: javascript angular loops typescript