错误错误:未捕获(在承诺中):类型错误:无法读取空的属性"订阅"(离子角度)



在我的angular ionic项目中,当我登录第一页时给了我错误" error error: Uncaught (In promise): TypeError: Cannot read property 'subscribe' of null"但当我重新加载页面时,我没有错误,我有数据。谢谢你

(await this.pageService.getAllTables()).subscribe((res: any) => {
this.tables = res.body
});
}```
```getAllTables() {
this.storage.get('USER').then(user =>{this.user = user;});
return this.storage.get('ACCESS_TOKEN').then(token =>{
if (this.user) {
return this.http.get(this.url + 'table/' + this.user.id, { 
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token
}), 
observe: 'response'
});
}
return null;
});
}```

try this

getAllTables() {
return this.storage.get('USER')
.then(user =>{this.user = user;})
.then(() => this.storage.get('ACCESS_TOKEN'))
.then(token =>{
if (this.user) {
return this.http.get(this.url + 'table/' + this.user.id, { 
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token
}), 
observe: 'response'
});
}
return null;
});

这段代码仍然很奇怪,因为你返回observable,包裹在promise中,但至少它应该可以工作。

你可以试着把所有东西都转换成承诺。它看起来像这样:

getAllTables() {
return this.storage.get('USER')
.then(user =>{this.user = user;})
.then(() => this.storage.get('ACCESS_TOKEN'))
.then(token =>{
if (this.user) {
return this.http.get(this.url + 'table/' + this.user.id, { 
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token
}), 
observe: 'response'
}).toPromise();
}
return null;
});

用法:

this.tables = (await this.pageService.getAllTables())?.body;

我认为您的this.pageService.getAllTables在您订阅时尚未加载。

请先注入"pageService"在构造函数中,然后将所有内容转换为promises

这样的

constructor(){
private pageService: PageService
}

之后将所有内容转换为承诺

getAllTables() {
return this.storage.get('USER')
.then(user =>{this.user = user;})
.then(() => this.storage.get('ACCESS_TOKEN'))
.then(token =>{
if (this.user) {
return this.http.get(this.url + 'table/' + this.user.id, { 
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token
}), 
observe: 'response'
}).toPromise();
}
return null;
});

相关内容

最新更新