2016-08-16 13 views
1

私はng2 rc4で開発しています。私のユーザーデータはMongo DBに格納されています。ユーザーは自分のページのデータを編集できますが、編集ページに問題があります。私のソースは、次のようになります。ケース1ではなく、ケース2には何TELオブジェクトが存在しないと、入力タグがあるため解像度で行方不明TELオブジェクトのエラーをスローしたときにAngularJS 2の式でJson(Mongo DB)データを使用する方法

import { User } from './user.service.ts'; 

@component(
    selector: 'edit-user', 
    template: ` 
     Email : <input type="text" [(ngModel)]="userInfo.email"><br /> 
     Name : <input type="text" [(ngModel)]="userInfo.name"><br /> 
     Address : <input type="text" [(ngModel)]="userInfo.address"><br /> 
     Tel : 
     <input type="text" [(ngModel)]="userInfo.tel.tel1">- 
     <input type="text" [(ngModel)]="userInfo.tel.tel2">- 
     <input type="text" [(ngModel)]="userInfo.tel.tel3"><br /> 
     <button>Submit</button> 
    `, 
    providers: [ User ] 
) 
export class EditUser { 
    private userInfo: any = { 
     'email': '', 
     'name': '', 
     'address': '', 
     'tel': { 
      'tel1': '', 
      'tel2': '', 
      'tel3': '' 
     } 
    }; 

    constructor(private user: User) { 
    } 
    ngOnInit() { 
     this.getUser(); 
    } 

    getUser() { 
     this.user.getUser(...) 
      .then(res => { 
       ... 
       // case 1 
       // res = {'email': '[email protected]', 'name': 'NameA', 'address': 'aaa', 'tel': {'tel1': '1', 'tel2': '2', 'tel3': '3'}}; 
       // case 2 
       // res = {'email': '[email protected]', 'name': 'NameB'}; 
       this.userInfo = res; 
       ... 
      }) 
      .catch(...) 
    } 
} 

すべてが大丈夫です。ユーザーはケース2にtel情報を入力していませんでした。したがって、これは2ウェイバインディングエラーです:userInfoの未定義のtelプロパティ。式を使わないで、tel.tel1プロパティを入力しないでください。

mongoDBとjsonの階層は変更できません。どうすれば解決できますか?

答えて

0

res.tel = res.tel || {}; 
this.userInfo = res; 
+0

場合、私はそれを知っているtelに空のオブジェクトを割り当てます。それは私には答えない。 resにはtelプロパティのようなものがたくさんあります。 – mago

+0

その方法は空のオブジェクトをmongoDBに送ります。私はそれを望んでいない。 – mago

関連する問題