2016-08-16 60 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

相关问题