菜鳥角度問題在這里。我有一個子組件,在其中按下按鈕后,它將一個表單欄位傳遞給一個父組件。我必須將此欄位作為查詢引數傳遞給API GET /valuation/需要或多或少 20 個可選引數的欄位,其中名稱與輸入欄位不同。
res我在父函式 accept 中創建了一個臨時物件,在其中迭代欄位。我仍然不知道如何在物件內部傳遞這個引數res,使用多個if是臟代碼。
例如父組件中的函式
accept(form:any){
const req: any = {};
if(form.name)
req.user = form.name
if(form.address)
req.clusterAddress = form.address
... and so on x 20 times
this.requestService.getRequest(req).subscribe(
(response) => {
this.getRequest(response);
}, (error) => {
console.error(error);
}
}
如您所見,這不是一個可行的選擇,我可以用什么來動態地獲取查詢引數名稱?
uj5u.com熱心網友回復:
您可以使用映射來存盤有關表單中的哪個屬性映射到res物件上的哪個屬性的資訊,然后遍歷鍵,檢查值是否存在并分配:
const formToResMap: { [key: string]: string } = {
name: 'name',
address: 'clusterAddress',
// ...
};
accept(form: any) {
const req = Object.keys(formToResMap).reduce((acc, key) => {
if (form[key]) {
acc[formToResMap[key]] = form[key];
}
return acc;
}, {});
console.log(req);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/478666.html
標籤:javascript 有角度的 angularjs 打字稿
