我从v2开始使用angular,我使用直接方法通过HTTP进行变量赋值。我知道我应该使用模型类,但我遇到了一个问题,即如果模型(属性)的某个变量在JSON中不存在则会中断。?
DI不打算在这里使用。?如何设计模型,以便当我向模型(属性)添加新变量时,它不会中断?
您如何设计应用和型号?
答案 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方法中。还有更好的方法吗?