Каждый раз, когда я пытаюсь получить доступ к свойству глубокого уровня (я думаю, элемент в массиве по его индексу), я получаю следующую ошибку:
ОШИБКА TypeError: Невозможно назначить только для чтения свойство 'value' объекта '[object Object]'
Найдите ниже код, который я пытаюсь запустить, но выдает ошибку выше:
@Input() data: CivilLiabilityQuestionnaireModel;
public questions: CivilLiabilityQuestionnaireModel;
this.questions = { ...this.data };
const questionGroupIndex = 0;
const questionGroupItemIndex = 0;
this.questions
.questionGroup[questionGroupIndex]
.questionGroupItems[questionGroupItemIndex]
.answers[0]
.value = form[val];
Немного подробнее о том, что возможно:
// This works
this.questions.id = 'hotdog';
// This doesn't work
// ERROR TypeError: Cannot assign to read only property 'id' of object '[object Object]'
this.questions.questionGroup[questionGroupIndex].id = 'hamburger';
Я думал, что это возможно только при использовании оператора распространения, но это превратит все мои массивы в объекты, в то время как я должен хранить свои массивы любой ценой.
Вот распространенное решение, которое я пробовал:
this.questions = {
...this.questions,
questionGroup: {
...this.questions.questionGroup,
[questionGroupIndex]: {
...this.questions.questionGroup[questionGroupIndex],
questionGroupItems: {
...this.questions.questionGroup[questionGroupIndex].questionGroupItems,
[questionGroupItemIndex]: {
...this.questions.questionGroup[questionGroupIndex].questionGroupItems[questionGroupItemIndex],
answers: {
...this.questions.questionGroup[questionGroupIndex].questionGroupItems[questionGroupItemIndex].answers,
[0]: {
...this.questions.questionGroup[questionGroupIndex].questionGroupItems[questionGroupItemIndex].answers[0],
value: form[val]
}
}
}
}
}
}
};