Можно ли установить идентификатор компонента Stencil в конструкторе?

Я хочу создать компонент 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()
  };
}

но это тоже не устанавливает идентификатор, пока элемент не отображается

Когда @Element _el действительно устанавливается Stencil?

0 ответов

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