我正在以成角度的形式使用FormBuilder
。我想根据从API调用到后端的响应(此处称为FormControl
)来初始化userFormDetails
的值)。
我正在尝试使用粗箭头功能()=>
来实现相同的功能:
//Other Form Controls
empCode:[this.userFormDetails.userId],
empName:[this.userFormDetails.name],
pensionType:[''],
fhName:[
()=>{
return this.userFormDetails.gender=="Male"? this.userFormDetails.fatherName:this.userFormDetails.spouseName
}],
.
//Rest of the controls
但是此评估为
function () { return _this.userFormDetails.gender == "Male" ? _this.userFormDetails.fatherName : _this.userFormDetails.spouseName; }
它返回函数本身作为值,而不是对其求值。如何使函数返回评估值?
我也尝试这样做:
1。
()=>{ ( **<--addition parenthesis**
return this.userFormDetails.gender=="Male"? this.userFormDetails.fatherName:this.userFormDetails.spouseName
)}
fhName:[{
value: ()=>{
return this.userFormDetails.gender=="Male"?
this.userFormDetails.fatherName:this.userFormDetails.spouseName
},
disabled:false
}
]
但是他们都不起作用。 有人可以指导我正确的方法吗?
答案 0 :(得分:1)
您正在将窗体控件设置为功能。您已经声明了它,但没有调用它,因此请使用匿名函数作为闭包,如下所示。
尝试以这种方式更改
fhName:[(()=>{
return this.userFormDetails.gender=="Male"? this.userFormDetails.fatherName:this.userFormDetails.spouseName
})()]
包装在()
中的函数结尾处的附加()
将声明并调用该函数。
答案 1 :(得分:0)
As suggested by @Jithin Scaria in the comments, the following method works :
(() => { / content / })()
Wrapping the function in parenthesis and then calling it makes TS to compute the value and return it.