2017-01-20 67 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