Я хочу создать компонент Stencil, который имеет уникальное значение id при его создании. У меня есть функция, которая возвращает уникальный идентификатор каждый раз, когда он вызывается, поэтому в моем компоненте я определил:
@Element() _el! : HTMLStencilElement;
componentWillLoad() {
this._el.id = getUniqueId();
}
Проблема в том, что этот идентификатор не установлен до тех пор, пока компонент не отрендерится :( то есть, если я сделаю
document.createElement('my-element').id
Это возвращает мне пустую строку. Чтобы получить значение идентификатора, я должен сделать следующее:
const el = document.createElement('my-element');
el.componentOnReady();
el.id //now id is uniquely defined
Есть ли способ установить идентификатор, чтобы мне не пришлось ждать, пока компонент будет готов?
Я попытался добавить
constructor() {
this._el.id = getUniqueId();
}
но это выдает ошибку, говорящую, что this._el не определено.
Я тоже пробовал
hostData() {
return {
id : getUniqueId()
};
}
но это тоже не устанавливает id, пока элемент не будет отображен
Когда @Element _el фактически устанавливается Stencil?