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