Подписаться на услугу местной библиотеки - PullRequest
0 голосов
/ 17 июня 2019

Я создал библиотеку Angular, которая собирается с помощью ngpackagr, когда я создаю свое основное приложение. Все отлично работает, однако теперь у меня есть следующий вариант использования:

В моей библиотеке есть служба, которая что-то делает. Мне нужно подождать, пока он закончится, поэтому я подумал о том, чтобы сделать это в моем LibraryService:

LibraryService

reload = new Subject<any>();

// Do something else and after some time:

this.reload.next()

и в моем реальном коде приложения у меня есть другой сервис, который должен просто слушать его:

this.libraryService.reload.subscribe(()=>{})

Но подписчик никогда не будет вызван. Субъект перезагрузки и мой сервис, похоже, не знают друг о друге.

Что мне нужно сделать? Я уже импортировал библиотечный модуль в мой app.module.ts

1 Ответ

1 голос
/ 17 июня 2019

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

reload = new Subject<any>();
this.reload.next()
this.reload.subscribe(()=>{})

подписки должны быть выполнены до next()

рассмотрите возможность поместить подписку в конструктор, посмотрите, работает ли она, и вызовите next () при визуализации контента или в ngAfterViewInit

...