Angular 7 - ngOnInit не вызывается - PullRequest
0 голосов
/ 01 марта 2019

У нас есть основное угловое приложение, которое ссылается на библиотеку, представляющую подобласть основного приложения.

Мы хотели иметь возможность определять отдельные маршруты в нашей библиотеке.

Например:

  • приложение имеет корневые пути: / app
  • библиотека имеет дочерние пути: / library

После перехода к маршруту / app / library его следует перенаправить накомпонент хранится в библиотеке.

Мы добились этого с помощью отложенной загрузки.Это работает, только когда вы соединяете маршруты, используя свойство LoadChildren Route в главном приложении.

Мы также были вынуждены применить обходной путь, предложенный Angular team Сбой отложенной загрузки модуля из пакета библиотеки, расположенного в node_modulesпостроить - что является использованием модуля прокси / оболочки для ленивой загрузки библиотеки в угловом рабочем пространстве или узловых модулях.

В любом случае, у нас все работает.

И теперь начинается проблема:

Угловые события жизненного цикла (например, ngOnInit) не работают в компонентах нашей библиотеки.Когда мы ссылались на библиотеку, используя нетерпеливую загрузку (и в то же время потеряли желаемую нами маршрутизацию), угловые хуки начали работать просто отлично.Что здесь может быть не так?

Это проблема Angular?Мы хотели, чтобы наше приложение было хорошо структурировано, и поэтому мы разделили некоторые области на отдельные библиотеки.Однако мы близки к тому, чтобы отказаться и переместить весь код в основное приложение.

Редактировать:

Маршрутизация в app.module (forRoot, отложенная загрузка):

export const routes: Routes = [
  { path: 'app', loadChildren: './lazy/lazy-wrapper.module#LazyWrapperModule' },
];

Маршрутизация в (LazyWrapperModule, который находится внутри основного приложения) (forChild):

{ path: '', component: LibraryComponent, pathMatch: 'full' },

Маршрутизация в библиотеке (forChild):

{ path: 'library', component: TargetComponent },
...