【问题标题】:Angular - Pass an enumeration in a radio groupAngular - 在无线电组中传递枚举
【发布时间】:2018-11-08 23:39:34
【问题描述】:

工具

使用 Jhipster v5.0.1 和 Angular v6.0.0

目标

使用单选组以模板驱动的形式传递枚举。

试试

我尝试了 Angular 驱动的 Bootstrap 标准:Lien vers Radio-group ng-bootstrap

 <span class="input-group-append" ngbRadioGroup name="periodePremierJour" [(ngModel)]="modelTest">
  <label ngbButtonLabel class="radio-inline">
    <input ngbButton type="radio" [value]="MATIN"> Matin
  </label>
  <label ngbButtonLabel class="radio-inline">
    <input ngbButton type="radio" [value]="APRES_MIDI"> Après-midi
  </label>
</span>
<hr>
<pre>{{periodeEtatEnum[modelTest]}}</pre>

在 ts 中:

 periodeEtatEnum: PeriodeEtatEnum;
 modelTest : PeriodeEtatEnum;

在 enum.ts 中:

export enum PeriodeEtatEnum {
    MATIN = 'Matin',
    APRES_MIDI = 'Après-midi'
}

问题:modelTest 设置为未定义。

第二次尝试

<div *ngFor="let choice of keysPeriode">
  <input type="radio"
       [(ngModel)]="modelTest"
       [checked]="'MATIN'==choice"
       [ngModelOptions]="{standalone: true}"
       [value]="choice" />
{{periodeEtatEnum[choice]}}<br>

periodeEtatEnum = PeriodeEtatEnum;
keysPeriode = Object.keys(this.periodeEtatEnum).filter( e => typeof( e ) == "string" );
modelTest : PeriodeEtatEnum;

ngOnInit(){
    this.modelTest = PeriodeEtatEnum.MATIN;
}

问题:modelTest 在选择时具有正确的值。但是,选中的选项不起作用!你能帮帮我吗?

谢谢,

【问题讨论】:

    标签: angular


    【解决方案1】:

    我做了如下

    创建你的枚举

    export enum myEnum{
        Customer = 1,
        Store = 2
    }
    

    在您的组件中,获取枚举并从中生成密钥。

    // declaration
    enumKeys: any;
    this.enumKeys = Object.keys(this.myEnum).filter(Number);
    

    然后在你的模板中

     <div class="form-check " *ngFor="let item of enumKeys">
        <label class="form-check-label">
            <input class="form-check-input" type="radio" (change)="onChanged($event)" [value]="item"> {{ myEnum[item] }}
        </label>
    </div>
    

    【讨论】:

    • 感谢您的回答。过滤器(数字)的意义是什么?当我尝试这个时, enumKeys 会发回一个空数组。
    • 如果我使用: Object.keys(this.myEnum) 它会向我发送一个键值数组 ["Customer", "Store"] 但是如果我想遍历它发送的 enumKeys我回来了:'typeof myEnum' 不能用作索引类型。
    • 我花了一段时间才让我的代码使用这种方法工作。就我而言,我定义了一个 Gender 枚举。我的问题在于 attr myEnum,我将其初始化为 myEnum: Gender;,而它应该是 myEnum = Gender;。然后代码将 myEnum 理解为 Gender 枚举定义的表示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多