Angular 2:修改后的导入模型不会在视图中更新

时间:2017-05-16 09:48:25

标签: html angular view angular2-template

我更改了我的模型以符合使用实体框架的要求,但与此模型相关的视图无法使用新模型:

export class CV {
    public Id: number;
    public UserId: string;
    public Context: string;
    public Competences: Array<Competence>;
    public Expertises: Array<Expertise>;
    public Formations: Array<Formation>;
    public Missions: Array<Mission>;
}

更改前的模型是:

export class CV {
    public id: number;
    public userId: string;
    public context: string;
    public competences: Array<Competence>;
    public expertises: Array<Expertise>;
    public formations: Array<Formation>;
    public missions: Array<Mission>;

示例,我从控制台显示一个对象: Screenshot from my chrome console

所以我想在我的视图中更新模型,但我不知道如何。我尝试过不同的东西,比如ChangeDetectorRef,但没有任何工作。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我建议您使用Interfaces代替课程,因为在查看模型时,您不需要课程。因此,将其更改为界面:

export interface CV {
    Id: number;
    UserId: string;
    Context: string;
    Competences: Array<Competence>;
    Expertises: Array<Expertise>;
    Formations: Array<Formation>;
    Missions: Array<Mission>;
}

由于您的属性名称与您收到的数据不匹配,因此您需要映射值并使用与您的模型匹配的属性设置数据。

所以你的服务功能应该是这样的:

getData() {
  return this.http.get('the url')
    .map(res => res.json().map((x:any) => 
      Object.assign({Id:x.id,UserId:x.userId,/* Rest of the properties here */})))
}

然后在您的组件中正常订阅并将传入数据指定为CV类型的数组。