Свойства объекта трафарета не задаются, если они предоставлены через строку HTML - PullRequest
0 голосов
/ 19 июня 2019

Согласно документации, свойство компонента Stencil myProperty

  @Prop({attribute: "my-prop"})
  public myProperty?: object = {};

должно быть установлено с помощью этого HTML-кода:

  <my-component my-prop="{hello: 'world'}" ></my-component>

Но вместо этого для него установлено значение по умолчанию (пустой объект).Логические и строковые значения работают нормально.

Это ошибка или я что-то упустил?

1 Ответ

2 голосов
/ 19 июня 2019

Трафарет не анализирует свойства объекта автоматически.У вас есть два варианта:

  1. Установить свойство с помощью JavaScript
  2. Установить его как атрибут HTML (как действительный JSON) и проанализировать его вручную для объекта, который вы можете сохранить в свойстве @State.

Одно из изменений в ручном синтаксическом анализе, которое я всегда включаю, заключается в проверке, действительно ли это объект в том случае, если он был установлен с помощью JavaScript.

  @Watch('myObject')
  parseMyObjectProp(newValue: string | object) {
    if (newValue) {
      this.myInnerObject = typeof newValue === 'object' ? newValue : JSON.parse(newValue);
    }
  }
...