在Angular2 +中使用Model的最佳方法

时间:2018-01-28 10:29:01

标签: angular

我从v2开始使用angular,我使用直接方法通过HTTP进行变量赋值。我知道我应该使用模型类,但我遇到了一个问题,即如果模型(属性)的某个变量在JSON中不存在则会中断。?

DI不打算在这里使用。?如何设计模型,以便当我向模型(属性)添加新变量时,它不会中断?

您如何设计应用和型号?

2 个答案:

答案 0 :(得分:0)

考虑到您有联系模式。您可以使用模型:

export class SimpleContact {
    FirstName: string;
    LastName: string;
    Email: string;
    Phone: number;
    constructor(obj?: any) {
        this.FirstName = (obj && obj.FirstName) || '';
        this.LastName = (obj && obj.LastName) || '';
        this.Email = (obj && obj.Email) || '';
        this.Phone = (obj && obj.Phone) || null;
    }
}

因此,如果API数据中没有任何值,那么它将分配空值或空值。如果您的API数据更加嵌套,例如Email字段位于名为{{1的字段内假设你可以这样做:

Address

所以现在在你可以调用的任何组件中使用这个模型

this.Email = (obj && obj.Address && obj.Address.Email) || ''; 

如果需要,你可以在另一个模型中使用这个模型。假设你有一个let contact = new SimpleContact(data); 模型应该包含我们上面描述的Address模型,那么你可以创建模型为:

SimpleContact

答案 1 :(得分:0)

经过一些研究,我得到了以下解决方案: -

模型可以是这样的id和name,其中两者都有预定义的空值

export class Hero {
  constructor(public id: number = null,
              public name: string = null) { }
}

然后过了一段时间,如果我们添加像电力

这样的新属性
export class Hero {
  constructor(public id: number = null,
              public name: string = null,
              public power: string = null) { }
}

什么都没有打破。您甚至不必更改以前不使用电源属性的代码。

这是做这件事的好方法吗?

你现在不能直接将没有电源属性的新数组或对象分配给它。我们必须根据要求用hero = new Hero(1, 'Superman');做两个参数或三个参数。如果JSON发生变化,我们必须手动将新变量添加到Hero方法中。还有更好的方法吗?