【问题标题】:convert string to enum Value in angular 8将字符串转换为角度 8 中的枚举值
【发布时间】:2020-03-20 09:59:45
【问题描述】:

我需要将enum type 传递给服务器。但是当我将表单发送到服务器时,它会通过类型 string 发送 enum fild

这是我的枚举:

export enum PayTypes {
  Free,
  Subscribe
}

这是我的表格:

createForm(): void {
    this.lessonAddForm = new FormGroup({
        payType: new FormControl('', Validators.required),
    });
}


addLesson(): void {
    const payString = PayTypes[this.lessonAddForm.controls['payType'].value];
    const payType: PayTypes = PayTypes[payString];
    this.lessonAdd = this.lessonAddForm.value;
    this.lessonAdd.payType = payType;
    this.subscriptions = this.lessonService
        .add(this.lessonAdd)
        .subscribe(
            res => {
                if (res.success === true) {
                    this.alertService.success('', 'GENERAL.ADD_SUCCESS');
                    this.backToMenu();
                }
            }
        );
}

我尝试通过这种方式将字符串转换为枚举:

    const payString = PayTypes[this.lessonAddForm.controls['payType'].value];
    const payType: PayTypes = PayTypes[payString];
    this.lessonAdd = this.lessonAddForm.value;
    this.lessonAdd.payType = payType;

但它不起作用。

我该如何解决这个问题???

【问题讨论】:

标签: javascript angular typescript ecmascript-6 rxjs


【解决方案1】:

您必须将方括号内的值转换为这样的字符串

const payType: PayTypes = PayTypes[payString.toString()];

你也可以查看这个post

更新:检查您如何获取 payString 数据是否与您的枚举定义匹配?请注意,您的 payString 数据必须与您的枚举密钥相同

例如:

PayTypes['Free'] // This will work

PayTypes['free'] // This won't

【讨论】:

  • 还是发string
  • @kianoushdortaj 工作正常here!
  • @kianoushdortaj 再次检查我的答案
猜你喜欢
  • 2021-05-07
  • 1970-01-01
  • 2010-10-03
  • 1970-01-01
  • 2014-09-27
  • 1970-01-01
  • 2011-10-26
相关资源
最近更新 更多