在使用BehaviorSubject时,如果返回了null值,有以下几种可能的原因:
在初始化时可以给定一个默认值,保证其在observable中第一次被subscribe时仍有值。示例代码:
userSubject = new BehaviorSubject(new User());
因为BehaviorSubject在被subscribe前没有值,如果在访问其值时会返回null。可以在调用subscribe前保证BehaviorSubject已经被正确地初始化。示例代码:
if (this.userSubject.getValue() == null) {
this.userSubject.next(new User());
}
this.userSubject.subscribe( user => {
console.log(user);
});
需要检查在代码中是否存在对BehaviorSubject的手动设置值的操作,并确保不是意外的将其设置为了null。示例代码:
this.userSubject.next(null); //可能存在设置null值的风险,需检查此处