如何在 angular/typescript 中初始化子 json 对象?
How do I initialize a child json object in angular/typescript?
我有一个 model.ts
文件。
export class MainClass {
someVar: string;
var2: string;
subClass: SubClass;
contact: ContactList;
}
export class SubClass {
subItem: {
item1: string;
item2: string;
item3: string;
}
constructor() {}
}
export class ContactList {
itemList: ListItems[];
constructor() {}
}
export class ListItems {
list1: string;
list2: string;
list3: string;
}
我有一个 service.ts
文件,其中包含 setter 方法,我正在尝试更新模型。
constructor(private model: SomeModel) {}
//some code
updateList(param1, param2, param3) {
this.model.subClass.subItem.item1 = param1;//doesn't work
this.model.contact.item[0].list1 = param2;//doesn't work
this.model.someVar = param3;//works
}
它适用于单个变量,但在尝试更新子类和联系人时出现错误 Can't read property subItem of undefined
。我知道我必须在模型的构造函数中初始化 subItem 和 itemList 但我无法弄清楚语法。如何初始化模型和更新模型?
请确保您正在调用要在 MainClass 中初始化的复杂类型的构造函数。
export class MainClass {
someVar: string;
var2: string;
subClass: SubClass();
contact: ContactList();
}
注意括号。如果您有更复杂的初始化,我们也应该从其他角度考虑,因为您在这里描述了几个场景。例如在你的 SubClass 中,如果你希望在启动 SubClass 的实例时它也被初始化,你应该确保 subItem 有一个构造函数。
另一个在你的父 class 中初始化 subItem 的选项是在构造函数中做这样的事情:
constructor() {
//... some init code
this.subItem = new Array<SubItemModel>();
this.subItem.push(new SubItemModel());
}
希望这对您有所帮助,
因为 subClass 和 subItem 未定义。您必须在设置值之前为它们创建新实例:
把SomeModel改成MainClass或者用.map函数映射.
this.model.subClass = new SubClass();
this.model.subClass.subItem = {item1:'123',item2: '222', item3: '333'};
这个错误的原因是subClass ,subItem , contact 没有定义。要解决此问题,请按如下方式更改模型
export class MainClass {
someVar: string;
var2: string;
subClass: SubClass;
contact: ContactList;
constructor() {
if(!this.subClass)
this.subClass =new SubClass();
if(!this.contact)
this.contact =new ContactList();
}
}
export class SubClass {
subItem: SubItem;
constructor() {
if(!this.subItem)
this.subItem =new SubItem();
}
}
export class SubItem {
item1: string;
item2: string;
item3: string;
constructor() {}
}
export class ContactList {
itemList: ListItems[]=[];
constructor() {}
}
export class ListItems {
list1: string;
list2: string;
list3: string;
}
服役中
constructor(private model: SomeModel) {}
//some code
updateList(param1, param2, param3) {
this.model.subClass.subItem.item1 = param1;
this.model.contact.itemList = [];
let listItem: ListItems =new ListItems();
listItem.list1 =param2
this.model.contact.itemList.push(listItem)
this.model.someVar = param3;
}
希望这可以帮助您理解错误,您可以根据需要更改代码。希望这会有所帮助。
我不得不像这样初始化模型中的构造函数
export class MainClass {
someVar: string;
var2: string;
subClass: SubClass;
contact: ContactList;
constructor() {
this.subClass = new SubClass();
this.contact = new ContactList();
}
}
export class SubClass {
subItemVar: SubItem;
constructor() {
this.subItemVar = new SubItem();
}
}
export class SubItem {
item1: string;
item2: string;
item3: string;
}
export class ContactList {
itemList: ListItems[];
constructor() {
this.itemList = new Array<ListItems>();
}
}
export class ListItems {
list1: string;
list2: string;
list3: string;
}
我有一个 model.ts
文件。
export class MainClass {
someVar: string;
var2: string;
subClass: SubClass;
contact: ContactList;
}
export class SubClass {
subItem: {
item1: string;
item2: string;
item3: string;
}
constructor() {}
}
export class ContactList {
itemList: ListItems[];
constructor() {}
}
export class ListItems {
list1: string;
list2: string;
list3: string;
}
我有一个 service.ts
文件,其中包含 setter 方法,我正在尝试更新模型。
constructor(private model: SomeModel) {}
//some code
updateList(param1, param2, param3) {
this.model.subClass.subItem.item1 = param1;//doesn't work
this.model.contact.item[0].list1 = param2;//doesn't work
this.model.someVar = param3;//works
}
它适用于单个变量,但在尝试更新子类和联系人时出现错误 Can't read property subItem of undefined
。我知道我必须在模型的构造函数中初始化 subItem 和 itemList 但我无法弄清楚语法。如何初始化模型和更新模型?
请确保您正在调用要在 MainClass 中初始化的复杂类型的构造函数。
export class MainClass {
someVar: string;
var2: string;
subClass: SubClass();
contact: ContactList();
}
注意括号。如果您有更复杂的初始化,我们也应该从其他角度考虑,因为您在这里描述了几个场景。例如在你的 SubClass 中,如果你希望在启动 SubClass 的实例时它也被初始化,你应该确保 subItem 有一个构造函数。
另一个在你的父 class 中初始化 subItem 的选项是在构造函数中做这样的事情:
constructor() {
//... some init code
this.subItem = new Array<SubItemModel>();
this.subItem.push(new SubItemModel());
}
希望这对您有所帮助,
因为 subClass 和 subItem 未定义。您必须在设置值之前为它们创建新实例:
把SomeModel改成MainClass或者用.map函数映射.
this.model.subClass = new SubClass();
this.model.subClass.subItem = {item1:'123',item2: '222', item3: '333'};
这个错误的原因是subClass ,subItem , contact 没有定义。要解决此问题,请按如下方式更改模型
export class MainClass {
someVar: string;
var2: string;
subClass: SubClass;
contact: ContactList;
constructor() {
if(!this.subClass)
this.subClass =new SubClass();
if(!this.contact)
this.contact =new ContactList();
}
}
export class SubClass {
subItem: SubItem;
constructor() {
if(!this.subItem)
this.subItem =new SubItem();
}
}
export class SubItem {
item1: string;
item2: string;
item3: string;
constructor() {}
}
export class ContactList {
itemList: ListItems[]=[];
constructor() {}
}
export class ListItems {
list1: string;
list2: string;
list3: string;
}
服役中
constructor(private model: SomeModel) {}
//some code
updateList(param1, param2, param3) {
this.model.subClass.subItem.item1 = param1;
this.model.contact.itemList = [];
let listItem: ListItems =new ListItems();
listItem.list1 =param2
this.model.contact.itemList.push(listItem)
this.model.someVar = param3;
}
希望这可以帮助您理解错误,您可以根据需要更改代码。希望这会有所帮助。
我不得不像这样初始化模型中的构造函数
export class MainClass {
someVar: string;
var2: string;
subClass: SubClass;
contact: ContactList;
constructor() {
this.subClass = new SubClass();
this.contact = new ContactList();
}
}
export class SubClass {
subItemVar: SubItem;
constructor() {
this.subItemVar = new SubItem();
}
}
export class SubItem {
item1: string;
item2: string;
item3: string;
}
export class ContactList {
itemList: ListItems[];
constructor() {
this.itemList = new Array<ListItems>();
}
}
export class ListItems {
list1: string;
list2: string;
list3: string;
}