Преобразовать значение в строковый объект для привязки свойства - PullRequest
1 голос
/ 06 ноября 2019

У меня есть компонент для динамического создания формы, поэтому я получаю все метаданные с сервера, и в моем шаблоне есть ngFor для создания моих полей. Все атрибуты связывают свойства с результатом данных, полученных с сервера. В одном из них у меня следующая ситуация: если жесткий код, подобный этому,
[filterParams]="{state:model.state_field}"
, когда я вызываю сервис, я могу использовать этот filterParams как объект и отправлять через http-запрос, но я использую метаданныес сервера я на самом деле код, как это
[filterParams]="metadata.filterParams"
и внутри metadata.filterParams у меня есть строка "{state: model.state}", но значение для 'state' не может быть строкойпотому что я использую значение модели.

Как я могу преобразовать строку, полученную из моих метаданных, в объект, который улавливает значение из модели, так же, как он работает при жестком кодировании?

1 Ответ

0 голосов
/ 06 ноября 2019

Вам нужно конвертировать metadata.filterParams: "{state:model.state_field}" в metadata.filterParams: {state:model.state_field}

Так попробуйте так:

 yourFunction() {
    let model = {
      state_field: 1
    };
    var eventstring = this.metadata.filterParams.replace(/"/g, "");
    this.metadata.filterParams = eval(eventstring)
    console.log(this.metadata);
  }

Рабочая демоверсия

Из вашего комментария: когда я понял, что жесткое кодирование в [filterParams] с помощью "{state: model.state_field}"

Здесь: [filterParams]="{state:model.state_field}"

"" не является строкой, кавычки используются только для привязки объекта {state:model.state_field}

...