Javascript 上下文';这';EventEmitter<;字符串>;未分配给';这';可观测类型法<;字符串>;

Javascript 上下文';这';EventEmitter<;字符串>;未分配给';这';可观测类型法<;字符串>;,javascript,angular,typescript,web-applications,single-page-application,Javascript,Angular,Typescript,Web Applications,Single Page Application,我查看了GitHub存储库中的示例。应用程序已成功执行且编写的代码通常正常工作,但我的Visual Studio代码中存在以下错误: 类型为“EventEmitter”的“this”上下文不可分配给类型为“Observable”的方法的“this”。\n属性“lift”的类型不兼容。\n type'(运算符:运算符)=>Observable'不可分配给类型(运算符:运算符)=>可观察。\ n类型“可观察”不可分配给类型“可观察”。\n类型“字符串”不可分配给类型“R” 生成错误的代码如下所示:

我查看了GitHub存储库中的示例。应用程序已成功执行且编写的代码通常正常工作,但我的Visual Studio代码中存在以下错误:

类型为“EventEmitter”的“this”上下文不可分配给类型为“Observable”的方法的“this”。\n属性“lift”的类型不兼容。\n type'(运算符:运算符)=>Observable'不可分配给类型(运算符:运算符)=>可观察。\ n类型“可观察”不可分配给类型“可观察”。\n类型“字符串”不可分配给类型“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);
   }
}
从“@angular/core”导入{EventEmitter};
出口类通知服务{
通知程序=新的EventEmitter();
通知(消息:字符串){
this.notifier.emit(消息);
}
}
虽然应用程序工作正常,但代码给出的错误如图所示:


此错误的最佳解决方案是什么?

服务:

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);
});

您的RxJs版本是什么?@Vikas my package.json中的RxJs版本是5.1.0请同时包含“this.notificationService.notifier”代码,这将有助于调试问题。SureshKumarAriya说。下面是包含NotificationService的文件代码。我仍然有这个问题。EventEmitter主要用于Child=>Parent通信。如果您是从service=>component进行通信,则应该使用Subject/of。