angular - this.pickupStatus.emit 不是函数

标签 angular typescript ionic3

我有一个提供商可以监听我的 firestore 数据库的变化,并更改司机上车请求的状态。 这是我的司机提供商中的 pickuprequest 函数

 getDriverPickupRequest(id)
{
this.DriverCollection.doc<Driver>(id).valueChanges()
                .subscribe(data => {
                        this.pickuprequest.changePickupStatus(data.pickupRequest);

} 

现在我有一个服务可以监视更改并将其发送到我的主页。

private pickupRequest = new BehaviorSubject<boolean>(false);
public pickupStatus = this.pickupRequest.asObservable();

changePickupStatus(value: boolean) {
this.pickupStatus.emit(value);
}

constructor(public http: HttpClient) {
//console.log('Hello PickuprequestProvider Provider');

}

现在我收到一条错误消息,提示“this.pickupStatus.emit 不是一个函数”。代码有什么问题?

最佳答案

A BehaviorSubject有一个 next它上面的方法,用于将新值推送到可观察对象。

问题:您正在调用 emitpickupStatus这是一个Observable当你应该调用nextpickupRequest这是 BehaviorSubject

修复:

private pickupRequest = new BehaviorSubject<boolean>(false);
public pickupStatus = this.pickupRequest.asObservable();

changePickupStatus(value: boolean) {
  this.pickupRequest.next(value);
}

使用 this.pickupRequest.next(value);我们实质上是在 pickupRequest 上推一个新值这是 BehaviorSubject通过使用 next方法。

关于angular - this.pickupStatus.emit 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53241807/

相关文章:

ios - iOS 10.3 中证书透明度的 Cordova SSL 错误

angular - ABP (AspNet Boilerplate) API 的间歇性 CORS 策略问题

angular - ionic 4 ion-select-option set of background-color 不起作用

angular - 如果类具有 @Pipe 注释,则 Angular2 和 TypeScript 的官方 Jasmine 测试 101 示例不起作用

javascript - 如何限制 typescript 中类的允许属性

angular - HTTP 拦截器在发送下一个请求之前不等待 token 刷新

javascript - 为什么共享模块导入不会失败?

Angular >= 2 - 服务监听另一个服务中的变化

angular - 在用户填写表单 Angular 2 时检查表单验证

angular - Ionic 3 - 检查位置是否已启用