如何在Angle 4+中获取FormControl的完整路径?
我有反应式:
{
name: '',
address: {
city: '',
country: ''
}
}
我需要获得完整的控制权:
const addressFormGroup = this.form.get('address');
const cityControl = addressFormGroup.get('city');
cityControl.plsGiveMeFullPath() //address.city
是否存在获取cityControl完整路径的方法: FormGroup?
答案 0 :(得分:2)
我实现了这两种方法来获得此功能。
第一个是一个助手,它返回控件的名称(因为它在其父级中被索引)。该函数通过在其父级的controls
对象上搜索与您提供的控件相同的控件,然后返回键来实现。
第二个是递归函数,该函数使用上面的帮助程序调用返回控件的名称,并为控件的父级调用自身,并将返回字符串与点('。')连接起来。
getControlName(c: AbstractControl): string | null {
if(!c.parent) return null;
const formGroup = c.parent.controls;
return Object.keys(formGroup).find(name => c === formGroup[name]) || null;
}
getControlPath(c: AbstractControl, path: string): string | null {
path = this.getControlName(c) + path;
if(c.parent && this.getControlName(c.parent)) {
path = "."+path;
return this.getControlPath(c.parent, path);
} else {
return path;
}
}