我收到错误
无法阅读财产'订阅' null。
这是发生错误的地方,这是由其类的构造函数调用的:
loadItems() {
this.itemService.subscribeItems().subscribe(x => {
this.items = x;
console.log(x);
});
}
它调用了这种服务方法,这就是我认为的问题所在。这可能与return null
subscribeItems(): Observable<Item[]> {
this.session.uid.subscribe(x => {
return this.af.database.list('users/' + x + '/Items')
.map(Item.fromJsonList);
});
return null;
}
会话服务保存用户登录时更新的uid: 这部分工作正常。
_uid = new BehaviorSubject<string>('');
uid = this._uid.asObservable();
答案 0 :(得分:1)
试试这个:
subscribeItems(): Observable<Item[]> {
return this.session.uid.subscribe(x => {
return this.af.database.list('users/' + x + '/Items')
.map(Item.fromJsonList => Item.fromJsonList.json());
});
return null;
}
答案 1 :(得分:0)
发生此错误是因为可观察的/服务功能为null或返回null。
因此无论先初始化它。
例如
Items():Observable<any>
{
let itemToReturn = new Observable();
if(this.itemService.subscribeItems()){
this.itemService.subscribeItems().subscribe(data => itemToReturn.next(data));
}
return itemToReturn;
}
调用此方法或订阅该方法不会出错,因为它总是返回已初始化的项目。