我有一个有两个按钮的组件。当我按照下面给定的plunker中的演示点击第一个按钮时,它会发出一个事件,我的服务功能会发出一个带有一些值的异步主题...当我点击另一个按钮,我试图再次调用.next事件,但它抛出一些错误...我在这里做了一个pluker演示http://plnkr.co/edit/wpyV7o9JErdQMzGFZ4wp?p=preview ...如果我使用主题它工作正常但我不想使用主题这个案子......
export class ErrorService{
latestError:AsyncSubject<string> = new AsyncSubject();
Save() {
this.latestError.next('form submitted');
this.latestError.complete();
}
Update(){
this.latestError.next('form updated');
this.latestError.complete();
}
}
这是我的服务类,这就是我为异步主题调用.next事件的方式。
this.service.latestError.subscribe(
err=> {
console.log('result = '+err);
this.result=err;
},
err => {
console.log('err');
},
() => {
console.log('complete');
});
这就是我订阅异步主题的方式......点击事件第一次正常工作但是当我点击另一个按钮时它会抛出错误。有人请帮我解决这个错误......我怎么能使用我的异步主题第二次调用.next()...提前致谢
答案 0 :(得分:2)
试试这个
this.service.latestError.subscribe(
err=> {
this.service.latestError = new AsyncSubject(); // this set isStopped property to false again
console.log('result = '+err);
this.result=err;
},
err => {
console.log('err');
},
() => {
console.log('complete');
});
答案 1 :(得分:1)
这是因为您在主题上调用了complete
方法。它结束了数据流链,您不能再接收事件了。