我要构建具有以下格式的数组:
x = [
{'projectName': 'a', 'serialNo': 1},
{'projectName': 'b', 'serialNo': 2},
{'projectName': 'c', 'serialNo': 3},
]
使用从表单传递的值
onSubmit(form: NgForm) {
let x = []
x.push({
projectName: form.value.projectName,
serialNo: form.value.serialNo,
})
console.log(x) // -> this will always give me the value I just inserted
// form.value.project = JSON.stringify(x)
// putObj(form.value).subscribe((res) => { });
}
然后,我在后端发送form.value并修改字段project
。我的问题是,每次我将值推入x
时,先前的值都会被覆盖。
似乎是哪个问题?如果我的代码不清楚,我可以解释或提供更多摘要。
编辑:非常感谢!我在组件内部声明了x
。
答案 0 :(得分:3)
让x = [] //在外面声明
onSubmit(form:NgForm){
x.push({
projectName: form.value.projectName,
serialNo: form.value.serialNo,
})
console.log(x) // -> this will always give me the value I just inserted
// form.value.project = JSON.stringify(x)
// putObj(form.value).subscribe((res) => { });
}
答案 1 :(得分:1)
未经测试,但应在理论上起作用:
// ...
private x: {'projectName': string, 'serialNo':number}[] = [];
// ...
onSubmit(form: NgForm) {
this.x.push({
projectName: form.value.projectName,
serialNo: form.value.serialNo,
});
console.log(this.x)
}
// ...
答案 2 :(得分:1)
是的,将let x = []移到函数之外。不确定您打算做什么,它可能需要是一个全局变量。每次输入函数时,都将x设置为空数组。
答案 3 :(得分:1)
删除
let x = []
您可以在组件的ur onInit方法中使用初始元素来定义数组,例如:
type x = Array<{projectName: string, serialNo: number}>;
ngOnInit() {
this.x = [
{'projectName': 'a', 'serialNo': 1},
{'projectName': 'b', 'serialNo': 2},
{'projectName': 'c', 'serialNo': 3},
]
}
onSubmit(form: NgForm) {
this.x.push({
projectName: form.value.projectName,
serialNo: form.value.serialNo,
})
}