【发布时间】:2018-07-06 01:42:40
【问题描述】:
我有这项服务可以在我的应用程序的组件之间共享数据:
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
@Injectable()
export class DataService {
private source = new BehaviorSubject<any>('');
data = this.source.asObservable();
constructor() { }
update(values: any) {
this.source.next(values);
}
}
从一个组件,我像这样更新数据:
this.dataSvc.update(this.data);
假设 this.data 是一个对象。
从另一个组件,我订阅服务
this.dataSvc.data.subscribe(
data => let object = data,
error => console.log(error),
() => console.log('complete')
);
从不调用完整方法。
如何调用完整的方法并停止订阅?
我尝试在下一次服务之后添加this.source.complete()。它不起作用
谢谢
【问题讨论】:
-
试试
this.dataSvc.data.take(1).subscribe(...) -
我不能使用 take。注意一个函数
-
需要导入take操作符...
import 'rxjs/add/operator/take' -
它可以工作,但是我可以停止向我的服务发送?
标签: angular observable subscription