BehaivorSubject return null



我有这个问题,我需要的行为主题不返回值时,它是空的,因为结果是由第三方的组件抓取,如果这是空的,它抛出我一个错误。

只有当我从服务器获得响应时,它才应该返回相同的值,我在这里留下了我的代码:

getCarList(params): Observable<CarListGrid> {
if (this.carListSubject$ === undefined) {
this.carListSubject$ = new BehaviorSubject<CarListGrid>(null);
this.refetchCarList(params);
}
return this.carListSubject$.asObservable();
}
refetchCarList(gridParams) {
const subscription = this.http.post<CarListGrid>(this.baseUrl + 'GetCar', {gridParams} ,httpOptions).pipe(map(data => this.setDefaultValuesToCar(data))).subscribe(
(response) => {
this.carListSubject$.next(response);
subscription.unsubscribe();
});
}

是否有任何方法可以防止主题响应一个值,当它是null?或者,我如何用另一种方式来实现这个?

谢谢!

你可以过滤掉这些空值,像这样:

getCarList(params): Observable<CarListGrid> {
if (this.carListSubject$ === undefined) {
this.carListSubject$ = new BehaviorSubject<CarListGrid>(null);
this.refetchCarList(params);
}
return this.carListSubject$
.asObservable()
.pipe(filter((value) => value !== null));
}