我有一个提供商可以监听我的 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
它上面的方法,用于将新值推送到可观察对象。
问题:您正在调用 emit
在 pickupStatus
这是一个Observable
当你应该调用next
在 pickupRequest
这是 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/