我有一个枚举:
export enum DistanceMeasure {
Miles, Kilometers
}
要在用户对象中使用:
export class User {
... some stuff
MaxTravelDistance: number;
DistanceMeasure: DistanceMeasure;
MaxTravelTime: TimeSpan;
... some more stuff
}
因此,来自服务器的信息以0(零)或1(距离测量)的形式来自服务器,这很好。 但是我需要显示字符串例如“英里”。
在我的(角度/离子)应用中,
的输出 console.log(user.DistanceMeasure);
为'0'(零)。 但是我读过要提取枚举字符串,您应该将其用作索引。 如果我这样做:
console.log(user.DistanceMeasure[0]);
它以未定义的形式返回。
那是为什么?由于user.DistanceMeasure属于DistanceMeasure类型? 不再是枚举了吗? 谢谢。
答案 0 :(得分:0)
默认情况下,枚举的数值为0,1,2 ... 您可以像这样定义枚举:
export enum DistanceMeasure {
Miles = 'Miles',
Kilometers = 'Kilometers'
}
现在DistanceMeasure.Miles
的值为“英里”。
答案 1 :(得分:0)
应为DistanceMeasure[user.DistanceMeasure]
,如以下代码段所示:
enum DistanceMeasure {
Miles, Kilometers
}
class User {
DistanceMeasure: DistanceMeasure;
}
const user = new User();
user.DistanceMeasure = 0;
console.log(DistanceMeasure[user.DistanceMeasure]); // Miles
造成混乱的主要原因是您没有遵循命名约定,因此最终获得的属性与枚举名称相同。
答案 2 :(得分:0)
enum Direction {
Up = "UP",
Down = "DOWN",
Left = "LEFT",
Right = "RIGHT",
}
我建议研究this,以便您了解它们的工作原理
答案 3 :(得分:0)
如果您未定义自定义值,则enum具有按声明顺序从0开始的整数值。 如果希望它们具有字符串值,则必须像这样声明它们
BSD sed
答案 4 :(得分:0)
const枚举只能使用常量枚举表达式,与常规枚举不同,它们在编译期间会被完全删除。 const枚举成员在使用站点内联。这是可能的,因为const枚举不能具有计算所得的成员。
因此,您可以在enum
中创建一个新变量distanceMeasure
来像数组一样使用它:
export enum DistanceMeasure {
Miles, Kilometers
}
const distanceMeasure = [DistanceMeasure.Miles, DistanceMeasure.Kilometers];
console.log(distanceMeasure[0]); // --> Miles
通过以下网址了解有关 TypeScript枚举的更多信息:https://www.typescriptlang.org/docs/handbook/enums.html
答案 5 :(得分:0)
由于您尚未明确定义枚举的值,因此它们的默认值分别为0和1。现在您从服务器获取了0和1,因此可以正确地映射到枚举。您要做的是编写一个管道,将0格式设置为“英里”,将1格式设置为“公里”。
@Pipe({
name: 'unit'
})
export class UnitPipe implements PipeTransform {
constructor() {
}
transform(value: DistanceMeasure ): any {
return value === DistanceMeasure.Mile ? 'Mile' : 'Kilometer'
}
}
然后在您的html中像这样使用它
{{ user.DistanceMeasure | unit }}