2016-02-12 134 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