![](/img/trans.png)
[英]ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'isAdmin' of null
[英]ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'subscribe' of null (Ionic Angular)
在我的 angular 離子項目中,當我登錄第一頁時出現錯誤“錯誤錯誤:未捕獲(承諾):TypeError:無法讀取屬性 '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;
});
}```
嘗試這個
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”,然后將所有內容轉換為 Promise
像這樣
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;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.