我有一個問題,與我要創造我的對象將其發送給我的API在角2反應形式,但我也ReactiveForms不產生必填字段和formgroup。ReactiveForms在角2生成JSON空值或空對象爲我的可選字段
如果我直接我的感謝對象發送HTTP POST請求我有這樣的JSON:
MyObject{
Name:"toto"
Surname:""
Address:{
City:"",
StreetName:""
}
}
但我想這個JSON與API達成一致。 (如果爲空或null屬性/對象我得到一個錯誤,因爲字段存在,但不是有效的:
MyObject{
Name:"toto"
}
因爲姓氏和地址是optionnal
我用ReactiveForm與formBuilder,我不知道我僅能夠獲得填補領域
該如何創建我的方式:
myForm: FormGroup;
myUserModel : UserModel; // (Interface UserModel such as my form fields)
constructor(private fb : FormBuilder){}
createForm(){
this.myFrom = this.fb.FormGroup({
Name:['';Validators.requires],
Surname:'',
Address:this.fb.FormFroup({
City: '',
StreetName:''
})
})
}
onSubmit(){
this.myUserModel = this.myForm.value;
this.registerUserToAPI(this.myUserModel);
}
欺騙我用這一點,但它是如此骯髒...:
cleanObjectToSend(obj){
return this.removeEmptyObj(this.removeEmptyAttribute(obj));
}
removeEmptyAttribute = (obj) => {
Object.keys(obj).forEach(key => {
if (obj[key] && typeof obj[key] === 'object') this.removeEmptyAttribute(obj[key]);
else if (obj[key] == null || obj[key] == '') delete obj[key];
});
return obj;
};
removeEmptyObj(obj){
Object.keys(obj).forEach(key => {
if (obj[key] && typeof obj[key] === 'object') {
if(Object.keys(obj[key]).length===0 && obj[key].constructor == Object){
delete obj[key];
return;
}
else this.removeEmptyObj(obj[key]);
}
else if (obj[key] == null || obj[key] == '') delete obj[key];
});
return obj;
}
它允許我只獲得非空和非空字段來生成我的JSON。
我怎麼能有一個乾淨的JSON JSON的情況下直接空或空值?
將這個工作嵌套的對象? –
是的,它完美的作品! – benji2092
我可以看到它只適用於一個嵌套bt不深的嵌套權利?對不起,我想念任何事 –