Угловой крюк жизненного цикла: ngOnInit()
Инициализировать директиву / компонент после того, как Angular впервые отобразит
привязанные к данным свойства и устанавливает ввод директивы / компонента
свойства.
Вызывается один раз, после первого ngOnChanges ().
Это общая проблема с Angular. Более старые методологии, подобные этой, использующие глобальную переменную в объекте окна, будут раздражать то, как Angular загружает приложение, а также TypeScript (во время разработки). Причина, по которой вам нужно сделать window['lib']
, а не window.lib
, заключается в том, что TypeScript ничего не знает о типах window.lib
, поэтому window['lib']
- это способ заставить его работать.
Другая часть заключается в том, что в зависимости от того, какой тип компиляции вы используете ( AOT против JIT), загружаемая вами библиотека может быть или не быть готова (также зависит от того, как вы повторная загрузка этого скрипта / модуля в приложение). Как уже упоминалось в разделе «Коммерческое самоубийство», вы можете попробовать другие Angular Lifecycle Hooks , но, скорее всего, вы в конечном итоге остановитесь на setTimeout
. На самом деле вам даже не нужно определять период ожидания, или вы можете передать 0 мс (как вы сделали в своем коде). Angular просто хочет, чтобы вы откладывали вызов этой функции до тех пор, пока DOM не закончит рендеринг.
Лично я не могу дождаться, пока все jQuery-подобные библиотеки будут преобразованы в соответствующие модули ES6. Дни простого добавления метки script
внизу body
давно прошли.