Свойство объекта LitElement имеет значение null

У меня есть компонент, который принимает объект как свойство, но по какой-то причине при рендеринге this.item не определено.

      @property({type: Object}) item?: {
    family: {iconUrl: string; name: string};
} | null;

static get styles(): CSSResult[] {
    return [
        css`
            ${unsafeCSS(styles)}
        `
    ];
}

render(): TemplateResult {
    if (this.item) { 
       return html`<div>found item</div>
     } else {
       return html`<div>item not found</div>
     }
}
 

В моем HTML есть следующее:

      const item = {  
   family: {
      name: 'title',
      iconUrl: 'url'
   } 

}

html`<my-component item="${item}"></my-component>

Что-то мне не хватает, чтобы принять объект в качестве аргумента? Я пробовал настроить несколько вещей, например, сделать arg .item="{ }" безрезультатно.

1 ответ

Используйте синтаксис свойства без строковых кавычек:

      html`<my-component .item=${item}></my-component>`

Вы можете сказать Lit, чтобы он не проверял строковый атрибут:

      @property({attribute: false}) item?: {
    family: {iconUrl: string; name: string};
};

Вам не нужно явное null если вы не хотите обращаться с этим иначе, чем undefined (это значение по умолчанию, если вы его не устанавливаете).

Другие вопросы по тегам