Angular Typescript FormGroup 提交后赋值
Angular Typescript FormGroup assigning value after submit
我将继续阅读关于 angular 的 Adam Freeman 书,但再次坚持使用 FormGroup 进行表单验证的示例,因为假设它曾经有效但现在打字稿的 2 个版本不喜欢它.
我可以看到它在尝试做什么,在单击提交按钮后,它获取每个表单值并将它们分配回我的产品对象。因此使用索引 ['name'] 类型的方法。如果我实际上将 'name'、'category' 或 'price' 的值放在 c 对 this.newProduct 的位置,它工作正常,但我还需要其他两个值已更新。
Object.keys(this.formGroup.controls)
.forEach(c => this.newProduct[c] = this.formGroup.controls[c].value)
我的产品对象是这样的
export class Product {
constructor(public id?: number,
public name?: string,
public category?: string,
public price?: number) {}
}
我怎样才能使这项工作以易于理解的方式进行?
我找到了这个 link 但我似乎无法理解是否可以使用它。
书中记录的方法确实感觉过于复杂和笨拙,请给我一些 C# :)
Object.keys
returns 一个字符串数组。这是有意的,例如 in this issue,
Types in TS are open ended. So keysof will likely be less than all properties you would get at runtime.
如果您知道自己在做什么,则可以对 Product
将作为索引接受的窄类型进行显式转换(更正式地说,类型断言):
const keys = Object.keys(this.formGroup.controls) as Array<keyof Product>
keys.forEach(c => this.newProduct[c] = this.formGroup.controls[c].value)
我将继续阅读关于 angular 的 Adam Freeman 书,但再次坚持使用 FormGroup 进行表单验证的示例,因为假设它曾经有效但现在打字稿的 2 个版本不喜欢它.
我可以看到它在尝试做什么,在单击提交按钮后,它获取每个表单值并将它们分配回我的产品对象。因此使用索引 ['name'] 类型的方法。如果我实际上将 'name'、'category' 或 'price' 的值放在 c 对 this.newProduct 的位置,它工作正常,但我还需要其他两个值已更新。
Object.keys(this.formGroup.controls)
.forEach(c => this.newProduct[c] = this.formGroup.controls[c].value)
我的产品对象是这样的
export class Product {
constructor(public id?: number,
public name?: string,
public category?: string,
public price?: number) {}
}
我怎样才能使这项工作以易于理解的方式进行?
我找到了这个 link 但我似乎无法理解是否可以使用它。
书中记录的方法确实感觉过于复杂和笨拙,请给我一些 C# :)
Object.keys
returns 一个字符串数组。这是有意的,例如 in this issue,
Types in TS are open ended. So keysof will likely be less than all properties you would get at runtime.
如果您知道自己在做什么,则可以对 Product
将作为索引接受的窄类型进行显式转换(更正式地说,类型断言):
const keys = Object.keys(this.formGroup.controls) as Array<keyof Product>
keys.forEach(c => this.newProduct[c] = this.formGroup.controls[c].value)