2017-01-20 69 views
1

我目前正在使用ionic 2構建一個簡單的電子郵件表單。所以有一個表單將填充所有主題,消息和字體。填好表格後,我把它作爲一個對象放在@ ionic/storage中。你可以看到下面的圖中:從本地存儲不工作的{{array.value}}

ionic localstorage

現在,接下來的頁面上,我嘗試使用這些代碼來獲取項目數據:

import { Component } from '@angular/core'; 
import { NavParams, NavController, LoadingController } from 'ionic-angular'; 

import { Storage } from '@ionic/storage'; 


@Component({ 
    selector: 'preview-email-page', 
    templateUrl: 'preview-email.html', 
}) 
export class PreviewEmailPage { 
    loading: any; 
    personalizeData: any[]; 

    constructor(
    public nav: NavController, 
    public navParams: NavParams, 
    public localStorage: Storage, 
) { 
    this.localStorage.get('personalizeData').then((value) => { 
     this.personalizeData = value; 
    }) 
    } 

    ionViewWillEnter(){ 
    console.log(this.ecardData); 
    } 

控制檯日誌也顯示,數據可以從當地的離子存儲器中正確提取。在輸出的console.log本:

<ion-header> 
    <ion-navbar> 
    <button ion-button menuToggle> 
     <ion-icon name="menu"></ion-icon> 
    </button> 
    <ion-title> 
     <span>Personalize {{personalizeData.subject}}</span> 
    </ion-title> 
    </ion-navbar> 
</ion-header> 

HTML頁面將不會與以下警告訪問:

console.log pic

,當我想顯示在HTML頁面中的價值問題發生控制檯日誌:

EXCEPTION: Error in ./PreviewEmailPage class PreviewEmailPage - inline template:6:12 caused by: Cannot read property 'subject' of undefined 

誰能幫我找到錯誤的原因是什麼?非常感謝您的幫助。謝謝

回答

3

這是因爲personalizeData不是在模板渲染的時刻定義,使用安全導航操作(?),以避免這個錯誤:

<span>Personalize {{personalizeData?.subject}}</span> 

瞭解更多關於安全導航操作here