Предоставляется в корневых службах в демонстрационном приложении

Я разрабатываю библиотеку Angular6, которая будет использоваться в качестве основы для многих внутренних веб-сайтов. Он будет предоставлять в основном услуги, но также предоставлять несколько компонентов.

Я хочу создать демонстрационное приложение для этой библиотеки, которое может продемонстрировать различные способы использования служб, так же, как библиотека компонентов демонстрирует различные способы использования компонентов.

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

Есть ли стратегия, которую я могу использовать, чтобы моя библиотека работала нормально при использовании в приложении (app.module), но могла быть построена / уничтожена в демонстрационном приложении?

Если я создам LibraryRootModule, а затем установлю все, что должно быть предоставлено в LibraryRootModule, поможет ли это? Как с этим будет работать AOT? Я также обеспокоен тем, что сторонние зависимости, которые используют providedIn root, могут не работать вместе с этой стратегией.

Любые идеи будут оценены. Спасибо.


person Pait    schedule 25.09.2019    source источник


Ответы (1)


1) Возможно, вам следует использовать шаблон forRoot (): https://angular.io/guide/singleton-services#the-forroot-pattern;

2) Возможно, вам стоит использовать разные приложения Angular на одном сайте. И используйте Platform Injector: https://blog.angularindepth.com/angular-dependency-injection-and-tree-shakeable-tokens-4588a8f70d5d.

Надеюсь, это поможет!

person Dmitriy Ivanko    schedule 25.09.2019