Можно ли установить идентификатор компонента Stencil в конструкторе? - PullRequest
0 голосов
/ 04 января 2019

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

...