Я пытаюсь заполнить объект "this.model" в виде строки, которая изначально представляет собой массив значений, которые заполняются пользователем, установившим флажки в вопроснике.
Следующий код обрабатывает событиекогда пользователь нажимает на флажок, чтобы начать заполнять массив и удалять значение, когда пользователь дважды щелкает на одном и том же флажке.
public checked(check: QuestionnaireCheck): void {
this.checkedOption = check;
if(this.model[check.name] == undefined) {
this.model[check.name] = [];
}
if(this.model[check.name].includes(check.value)) {
let index = this.model[check.name].indexOf(check.value);
if (index > -1) {
this.model[check.name].splice(index, 1);
}
}
else {
this.model[check.name].push(check.value);
}
}
Моя попытка изменить этот массив на строковое значение заключается в следующем, где он начинаетсяпоскольку строка затем обрабатывает операции с массивом, но возвращает значение обратно как строку, я не уверен, как обработать начальное неопределенное состояние массива.
public checked(check: QuestionnaireCheck): void {
let currentFeatures = this.model[check.name] || '';
currentFeatures = JSON.parse(currentFeatures);
if(currentFeatures.includes(check.value)) {
let index = currentFeatures.indexOf(check.value);
if (index > -1) {
currentFeatures.splice(index, 1);
}
} else {
currentFeatures.push(check.value);
}
this.model[check.name] = JSON.stringify(currentFeatures);
}
Далее: я получаю сообщение об ошибке:
ERROR SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>)
, что может быть связано с тем, что модель строится с помощью:
constructor(rawData?: Partial<SubmitModel>) {
Object.assign(this, rawData);
}
Мои ожидаемые результаты - массив значений, содержащийся в строковом значении.то есть: ['' eggs ',' ham ']
становятся: "[' eggs ',' ham ']"