【问题标题】:Angular Material Select shows the function name in the option fieldAngular Material Select 在选项字段中显示函数名称
【发布时间】:2020-05-10 11:54:45
【问题描述】:

我正在表单中创建一个下拉列表,该下拉列表从我创建的枚举中获取数据。 所以发生的事情是,当我在 mat-option 中迭代元素时,它会列出枚举的所有字段以及我用来调用枚举值的函数。这是我的语言枚举

export enum LanguageEnum{
da = "da-DA",
de = "de-DA",
en= "en-EN",
es= "es-ES",
fi= "fi-FI",
fr = "fr-FR",
it= "it-IT",
ko= "ko-KO",
ms= "ms-MS",
nl= "nl-NL",
no= "no-NO",
pl= "pl-PL",
pt= "pt-PT",
sv= "sv-SE"
}

以下是我用来仅从枚举中获取值的方法

export namespace LanguageEnum {

        export function getLangCodes() {
          return Object.values(LanguageEnum).filter(
            (langCode) => isNaN(<any>langCode) && langCode !== 'values'
          );
        }
      }

这就是我为 mat-select 中的每个枚举迭代的方式

<mat-form-field appearance="outline">
          <mat-label>Chosen Language</mat-label>
          <mat-select placeholder="Chosen Language" formControlName="ChosenLanguage">
            <mat-option *ngFor="let chosenlang of langCodes.getLangCodes();" [value]="chosenlang">
              {{ chosenlang }}</mat-option>
          </mat-select>
        </mat-form-field>

我还在 ts 文件中导入了 LanguageEnum 并初始化

this.langCodes = LanguageEnum; 

见上面的输出图像,它显示了函数名称以及枚举条目。 如何解决?

【问题讨论】:

    标签: angular typescript enums angular-material


    【解决方案1】:

    试试这个:

    export namespace LanguageEnum {
    
            function getLangCodes() {
              return Object.values(LanguageEnum).filter(
                (langCode) => isNaN(<any>langCode) && langCode !== 'values'
              );
            }
          }
    

    【讨论】:

    • 基本上你是说我应该省略函数 getLangCodes() 中的导出,对吗?但这无济于事,它会给出错误说明 TypeError: _co.langCodes.getLangCodes is not a function at Object.eval [as updateDirectives]
    猜你喜欢
    • 2018-10-14
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多