Как передать ViewChild в APP_INITIALIZER?

У меня есть некая сторонняя библиотека которая асинхронно инициализируется и после инициализации возвращает промис.

На вход получает контейнер в HTML element в котором нужно отрендерить.

export class MapApi {
  constructor(container: HTMLElement, props: MapProps = {}) {}
}


В ангуляр приложении я дожидаюсь полной инициализации карты через `APP_INITIALIZER`. Но как передать туда контейнер - ведь на этом этапе еще никакого темпейта не существует
  • Вопрос задан
  • 16 просмотров
Решения вопроса 1
На этапе инициализации, еще нет никаких ViewChild, так как темплейт еще не проинициализировался. Как вы сами и написали. Поэтому передать HTMLElement в инициализатор нельзя.

Минус вашего решения в том, что все приложение ждет пока проинициализируется карта и ничего не рендерит вообще. Лучшим решением будет создать отдельный компонент для карты и внутри этого компонента уже асинхронно подгружать и инициализировать карту. А на время загрузки/инициализировать показывать какой-нибудь лоадер или заглушку. В этом случае вы покажете пользователю хотя бы каркас приложения, а уже по готовности карту.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы