簡體   English   中英

Angular 2實例化具有空值的類

[英]Angular 2 instantiate class with empty values

如何將成員實例化為具有空值的類?

Plunkr

我實例化了

public members = new MemberClass();

但控制台顯示成員:{}所以我無法設置默認的空值

所以基本上我試圖復制一個空結構,如:

this.members = [ 
    { 
      "Name" : "", "Id" : "", "Team" : "",
      "Cases" : {
        "history" : []
      }
    }
];

使用接口;)這是一種可以使用屬性設置為Member的空對象創建數組的方法。 我不知道用例,至少我沒有設置空對象/數組模型的屬性,但在這里我們去:)

首先你的接口是:

export interface Member {
    Id: string;
    Name: string;
    Cases: Case[];
}
export interface History {
    Id: string;
    CaseNumber: string;
}
export interface Case {
    History: History[];
}

然后創建3個函數來設置屬性:

export function createMember(Id?:string,Name?:string, Cases?:Case[]): Member {
  return {
    Id,
    Name,
    Cases[createCase()]       
  }
}

export function createCase(History?:History[]): Case {
  return {
    History[createHistory()]
  }
}

export function createHistory(Id?: string,CaseNumber?:string): History {
  return {
    Id,
    CaseNumber
  }
}

現在在您的組件中,您可以調用函數createMember ,然后調用另外兩個函數:

members = [createMember()];

PS,根據你的型號,以下不是Member模型-array,他們的名字和搭建不匹配,但我已根據你提供的模型創建了上面的內容。

請記住,您在那里使用接口,而不是類。 在Typescript中,就像在Javascript中一樣,空對象只是{}

所以,要做你想要的,試試這個: let history: History = { Id:"", CaseNumber:""};

如果您試圖忽略任何這些屬性,您將收到他們需要的錯誤。 如果您希望在實例化時接口的屬性是可選的,請更新您的接口,如下所示: CaseNumber?: string;

在手冊中查找更多內容。

進一步澄清:類是一種具體類型,您可以像在任何語言中一樣實例化和使用。 如果您需要屬性上的構造函數或默認值,則應使用export class MyType {}

但是,根據我的經驗,我發現在大多數情況下,Typescript中的接口比類更有用。 這樣做的原因是您可以在開發時對它們進行編碼,但是當您發貨時它們不包含在您的軟件包中(注意這完全取決於您的用例)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM