一旦组件被加载,我试图将值修补到初始化的FormGroup中(其中editForm是FormGroup,editInfo是包含我想要修补到表单中的信息的JSON):
echo "<a class=\"fa fa-ban fa-2x cancelClass\" onClick=\"cancelClass('$id', '$formattedDate', '$time')\"></a><p class=\"text-center\">".$formattedDate." @ $time</p>";
出于某种原因,这不是修补任何值。 if语句在应该运行时运行,并且所有.getFullYear(),. getMonth()和.getDate()值(所有这些键值都是Date对象)都是定义且正确的。当我更换
Object.keys(this.editForm.controls).forEach(key => {
if ((key.includes("date") || key.includes("Date")) && this.editInfo[key] != undefined) {
this.editForm.patchValue({
key: {
date: {
year: this.editInfo[key].getFullYear(),
month: this.editInfo[key].getMonth() + 1,
day: this.editInfo[key].getDate()
}
}
});
}
});
与
this.editForm.patchValue({
key: {
date: {
该密钥已正确修补。是否有任何理由不指定密钥会导致这不起作用? This是我用于我的日期选择器的模块(我试图在上面修补的值),如果它有用的话。
答案 0 :(得分:1)
通过Ankit Saroch提供的链接(Is there a way to use variable keys in a JavaScript object literal?)找到我的答案。解决方法是在修补值时将[]置于键周围,如下所示:
this.editForm.patchValue({
[key]: {
date: {
使用括号,键被解释为computed property names。