说有一个
enum ArrowKey{
Up = "ArrowUp",
Right = "ArrowRight",
Down = "ArrowDown",
Left = "ArrowLeft"
}
现在收到KeyboardEvent
e.key
" ArrowUp"如何轻松检查枚举中是否存在此字符串值?以及如何在之后选出正确的枚举值?
答案 0 :(得分:3)
以下函数将返回与按下的箭头键对应的枚举值,如果未在该枚举中定义此键,则返回null。
getEnumValue(event): ArrowKey | null {
const pressedKey = event.key;
const keyEnum = Object.keys(ArrowKey).find(key => ArrowKey[key] === pressedKey);
return ArrowKey[keyEnum] || null;
}
演示:https://stackblitz.com/edit/angular-dmqwyf?embed=1&file=app/app.component.html
编辑:单行等效(ES 2017)
getEnumValue(event): ArrowKey | null {
return Object.values(ArrowKey).includes(event.key) ? event.key : null;
}