Контекст «this» EventEmitter <string>не назначен методу «this» типа Observable <string> - PullRequest
0 голосов
/ 04 ноября 2018

Я посмотрел пример в репозитории GitHub. Приложение выполнено успешно, и написанный код обычно работает, но у меня есть следующая ошибка в коде Visual Studio:

Контекст 'this' типа 'EventEmitter' нельзя назначить методу 'this' типа 'Observable'. \ N Типы свойства 'lift' несовместимы. \ N Тип '(operator: Operator) => Observable «нельзя назначить типу» (operator: Operator) => Observable ». \ n Тип« Observable »нельзя назначить типу« Observable ». \ n Тип« string »нельзя назначить типу« R ».

Код, который генерирует ошибку, выглядит следующим образом:

this.notificationService.notifier
.do(message => {
  this.message = message;
  this.snackVisibility = 'visible'; 
})
.switchMap(message => Observable.timer(2000))
.subscribe(timer => this.snackVisibility = 'hidden');

Весь код моего сервисного файла ниже:

import { EventEmitter } from "@angular/core";

export class NotificationService {
   notifier = new EventEmitter<string>();

   notify(message: string) {
      this.notifier.emit(message);
   }
}

Несмотря на то, что приложение работает отлично, VS Code выдает ошибку, как показано на рисунке:

enter image description here

Как лучше всего решить эту ошибку?

1 Ответ

0 голосов
/ 04 ноября 2018

Услуги:

import { Subject } from "rxjs";

export class NotificationService {
   private notifier = new Subject<string>();
   public notifier$ = this.notifier.asObservable();

   notify(message: string) {
      this.notifier.next(message);
   }
}

Компонент:

this.notificationService.notifier$
.subscribe(message => {
  this.message = message;
  this.snackVisibility = 'visible'; 
  setTimeout(()=>{
   this.snackVisibility = 'hidden';
  }, 2000);
});
...