[英]How do I initialize mdb tooltips on Angular with Typescript?
[英]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
文件,其中有我要更新模型的設置方法。
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
}
它適用於單個變量,但在嘗試更新subClass和聯系時出現錯誤, Can't read property subItem of undefined
。 我知道我必須在模型的構造函數中初始化subItem和itemList,但無法弄清楚語法。 如何初始化模型並更新模型?
請確保正在調用要在MainClass中初始化的復雜類型的構造函數。
export class MainClass {
someVar: string;
var2: string;
subClass: SubClass();
contact: ContactList();
}
注意括號。 如果您有更復雜的初始化,那么我們也應該考慮其他角度,因為這里描述了幾種情況。 例如,在子類中,如果希望在啟動子類的實例時也將其初始化,則應確保子項具有構造函數。
在父類中初始化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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.