网站搜索

typescript - 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 声明将被 TypeScript 编译器转译为以下内容:

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 == 0 并且 ModalTypes.Edit == 1。