2016-08-16 94 views
1

我在ng2 rc4中開發,我的用戶數據存儲在Mongo DB中。用戶可以在我的頁面中編輯他們的數據,但我的編輯頁面有問題。我的來源是這樣的:如何在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(...) 
    } 
} 

一切進展順利時,在情況1,但情況2,沒有電話對象,輸入標籤拋出,因爲在資源缺少的電話對象的錯誤。用戶在案例2中沒有輸入電話信息。所以這是一個雙向綁定錯誤:未定義userInfo的tel屬性。不要表達,不要輸入tel.tel1屬性。

我無法更改mongoDB和json層次結構。我該如何解決這個問題?

回答

0

分配空對象tel如果空

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

我知道。但那不是對我的回答。 res有很多類似tel的屬性。 – mago

+0

這就是發送空對象到mongoDB。我不想要它。 – mago

相關問題