我有一個頁面,我從構造函數的存儲器中獲取一個對象。但是,當我想要在html中獲取此對象的屬性時,會拋出異常Cannot read property "..." of undefined
。離子框架初始化頁面加載之前的值
我在一頁中設置數據並加載另一頁。
第一頁:
let detailsResponse = this.agentService.getAgentDetails(data.data.session.ssid, data.data.session.device);
detailsResponse.then(agent => {
this.storage.set('agent', JSON.stringify(agent.data)).then(() => {
this.navCtrl.push(TabsPage);
});
});
其他頁面:
import {Storage} from '@ionic/storage';
....
constructor(public navCtrl: NavController,
public navParams: NavParams,
public toastCtrl: ToastController,
public alertCtrl: AlertController,
public storage: Storage) {
this.storage.get('agent').then((agent) => {
this.sessionAgent = JSON.parse(agent);
});
}
我敢肯定,sessionAgent對象不是空,但是當我想要得到的屬性我得到的異常,而不是:
<ion-fab top right edge>
<button color="default" ion-fab>{{sessionAgent.status.value}}</button>
<ion-fab-list>
<button color="secondary" *ngIf="sessionAgent.status.value == 'Offline'" (click)="doOnline()" ion-fab>On</button>
<button color="danger" *ngIf="sessionAgent.status.value == 'Online'" (click)="doOffline()" ion-fab>Off</button>
</ion-fab-list>
</ion-fab>
但是,當我把一個*ngIf
檢查訪問HTML中的對象之前,它解決了這個問題。
<ion-fab top right edge *ngIf="sessionAgent != null">
<button color="default" ion-fab>{{sessionAgent.status.value}}</button>
<ion-fab-list>
<button color="secondary" *ngIf="sessionAgent.status.value == 'Offline'" (click)="doOnline()" ion-fab>On</button>
<button color="danger" *ngIf="sessionAgent.status.value == 'Online'" (click)="doOffline()" ion-fab>Off</button>
</ion-fab-list>
</ion-fab>
我無法理解這種行爲的原因。在加載頁面之前,我應該在哪裏填充我的對象(其餘服務調用,區域設置存儲)?