EventEmitter или ReplaySubject не работает из службы - PullRequest
0 голосов
/ 24 апреля 2020

Использование ng9 У меня есть служба, которая проверяет использование ресурсов. Я хочу, чтобы это инициировало событие, чтобы я мог иметь диалоговое окно c для информирования пользователя. Служба будет вызываться из множества мест, например, при сохранении записи.

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

Служба:

  private _limitExceeded = new ReplaySubject<LimitExceededEvent>(1);
  limitExceeded$ = this._limitExceeded.asObservable();

  ...

   checkResourceUsage(code: string): Observable<boolean> {
      return this.getLimits(code).pipe(
        map(limits => {

          if (limits) {
            const ev = new LimitExceededEvent();
            this._limitExceeded.next(ev);

            return false;
          }

          // no limits? not possible ? lets assume so and be kind to people
          return true;
        }));
   }

Компонент:

  if (this.form.valid) {
     this.limitsService.checkResourceLimit(Resources.Thing).subscribe((ok) => {
       if(ok) {
          .. go ahead and save it

Слушатель приложения:

this.limitsService.limitExceeded$
  .subscribe((ev: LimitExceededEvent) => 
     this.dialog.open(LimitExceededDialogComponent, { data: ev }));

Что я здесь не так делаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...