Angular - свойство объекта ngModel из переменной

У меня есть следующий объект пользователя в моем приложении:

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>

Однако это не работает. Как мне достичь желаемого результата?

3 ответа

Решение

Держите объект ниже как есть.

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>

Использовать индекс 0

<input [(ngModel)]="user.metadata.metaDataOptions[0]" placeholder="Enter number of children"></input>
Другие вопросы по тегам