Используйте RxJS в угловой библиотеке - PullRequest
0 голосов
/ 22 марта 2019

Я создаю угловую библиотеку "mylib"

Я создаю сервис, который использует BehaviorSubject Observable из rxjs.

Например,

  currentLanguage = new BehaviorSubject<string>(null);

У меня есть компонент в mylib, который будет устанавливать язык при изменении события на выбранном входе.

this.myService.currentLanguage.next('en'); 

После создания mylib и использования в myapp ... я могу подписаться на myService из myapp.

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

Тем не менее ... если из myapp я выбрасываю следующее значение .. оно работает ...

Поэтому мой вопрос заключается в том, почему из компонента пользовательской угловой библиотеки невозможно использовать"далее", но это из компонента, который использует библиотеку ... и это возможно из любого компонента приложения, который импортирует библиотечный сервис?

Может быть, это может быть связано с @NgModule в mylib.module.ts, возможно я должен импортировать rxjs в массиве import?Я пытаюсь

 imports: [CommonModule, FormsModule, BehaviorSubject]

сделать ошибку

идея?:)

Спасибо

Майк

1 Ответ

0 голосов
/ 22 марта 2019

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

Убедитесь, что в вашей службе указано «provideIn: 'root'".
Например:

@Injectable({
  providedIn: 'root',
})
export class myService {
.....
}

Также убедитесь, что служба импортирована с использованием имени библиотеки из каталога 'dist', а не относительного пути.

Например:

import { myService } from 'myLib';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...