Angular - 来自变量的 ngModel 对象 属性

Angular - ngModel object property from variable

我的应用程序中有以下用户对象:

let user = {name: "John", dob:"1995-10-15", metadata: {}}

我对象的metadata属性是一个空对象。根据用户输入,我想在 metadata 对象中创建一个新的 属性,例如:

<input [(ngModel)]="user.metadata.childrenNumber" placeholder="Enter number of children"></input>

到目前为止一切顺利,一切都按预期进行。然而,childrenNumber 属性 我已经存储在一个数组中:

let metaDataOptions = ['childrenNumber', 'workStatus', 'education'];

如何引用我希望从该数组创建的 属性 的名称?对于上面的案例,我尝试做这样的事情:

// i is index from ngFor. i can be 0, 1 or 2
<input [(ngModel)]="user.metadata.metaDataOptions[i]" placeholder="Enter number of children"></input>

但是,这不起作用。我怎样才能达到我想要的结果?

使用索引0

<input [(ngModel)]="user.metadata.metaDataOptions[0]" placeholder="Enter number of children"></input>

保持下方对象原样。

let user = {name: "John", dob:"1995-10-15", metadata: {}}
let metaDataOptions = ['childrenNumber', 'workStatus', 'education']

您可以使用以下代码行在元数据对象中创建对象 属性。

<input [(ngModel)]="user.metadata[metaDataOptions[i]]" placeholder="Enter number of children"></input>

你可以随它去

let user = {name: "John", dob:"1995-10-15", metadata: { 'childrenNumber' : null}}

然后

<input [(ngModel)]="user.metadata.childrenNumber" placeholder="Enter number of children"></input>