Это мой компонент:
@Component({
tag: "my-alert-list",
styleUrl: "alert-list.scss",
shadow: true,
})
export class AlertList {
@State() alertList: object[] = [];
@Method()
async appendAlert(
type: string,
message: string,
htmlContent: object,
canClose: boolean = false,
closeDelay: number
) {
let alertBoxElement = (
<my-alert-box
alert-type={type}
message={message}
can-close={canClose}
close-delay={closeDelay}
opened
>
{htmlContent}
</my-alert-box>
);
this.alertList = [
...this.alertList,
alertBoxElement
]
}
render() {
return (
<Host>
{this.alertList}
</Host>
);
}
}
Метод appendAlert
направлен на добавление нового элемента my-alert-box
в список предупреждений. В этом же случае я не хочу передавать простой текст в my-alert-box
, а в какой-то блок HTML. (my-alert-box
имеет элемент слота приемника, и я убедился, что он работает). Я пытался добиться этого с помощью переменной htmlContent, как вы можете видеть, но, конечно, это не сработает, если я сделаю:
$('#alertlist')[0].appendAlert(type='info',message='', htmlContent=document.createElement('div'))
Я получаю сообщение об ошибке:
[ STENCIL-DEV-MODE] vNode, переданный как дочерний, имеет неожиданный тип. Убедитесь, что он использует правильную функцию h (). Пустые объекты также могут быть причиной, ищите комментарии JSX, которые стали объектами.
Есть идеи, как мне этого добиться?