2016-02-12 138 views
2

我創建了一個枚舉來根據其添加或編輯模式打開一個模式。Angular 2將枚舉枚舉爲HTML中的組件函數

enum ModalTypes { 
    Add, 
    Edit 
} 

public openManageModal(type: ModalTypes) { 
    if (type == ModalTypes.Add) { 
     //Open edit modal 
    } 
    else { 
     //Open add modal 
    } 
} 

我似乎無法弄清楚如何從HTML調用此。我嘗試了各種各樣的東西,如openManageModal('Add'),但似乎沒有任何工作。很明顯,我可以在組件中創建一個函數,並將字符串解析爲一個枚舉,但我認爲這樣更合適。任何幫助,將不勝感激。

感謝

回答

1

你應該能夠調用這樣的功能:

openManageModal(0) // for ModalTypes.Add 
openManageModal(1) // for ModalTypes.Edit 

enum聲明將transpile由打字稿編譯如下:

var ModalTypes; 
(function (ModalTypes) { 
    ModalTypes[ModalTypes["Add"] = 0] = "Add"; 
    ModalTypes[ModalTypes["Edit"] = 1] = "Edit"; 
})(ModalTypes || (ModalTypes = {})); 

因此,它基本上創建一個如下所示的對象:

{ 
    0: "Add", 
    1: "Edit", 
    Add: 0, 
    Edit: 1 
} 

所以你可以看到ModalTypes.Add == 0ModalTypes.Edit == 1

+2

是的!這就像一個魅力。謝謝。我希望有一種方法可以通過名稱而不是int來引用。這雖然適用於我。 – aoakeson

+0

@aoakeson,我認爲使用字符串會更好:'openManageModal('add')'和'if(type ==='add'){...}'。 –

+1

我同意@aoakeson,這將是很好的參考名稱。使用字符串顯然是一個更清晰的解決方法,但忽略了使用枚舉的要點。 – nickspoon