Website-Suche

angular - Angular2 Enum-Wert im HTML-Value-Attribut verwenden


Ich versuche, einen Enum-Wert zu verwenden, um den ausgewählten Wert eines HTML-Attributs festzulegen:

export enum MyEnum {
    FirstValue,
    SecondValue
}
export function MyEnumAware(constructor: Function) {
    constructor.prototype.MyEnum = MyEnum;
}

@MyEnumAware
@Component({
    templateUrl: "./lot-edit.component.html",
    styleUrls: ["./lot-edit.component.css"],
})
export class LotEditComponent implements OnInit {
    @Input() myEnumValue: MyEnum ;

}

<td><input name="status" type="radio" [value]="MyEnum.FirstValue" [(ngModel)]="myEnumValue"></td>
<td><input name="status" type="radio" [value]="MyEnum.SecondValue" [(ngModel)]="myEnumValue"></td>

allerdings erhalte ich „Cannot read property 'FirstValue' of undefined“

Gibt es eine Möglichkeit, einen Enum-Wert als Wert von HTML-Attributen zu verwenden?

Antwort #1

Ihre Vorlage kann nur auf Member-Variablen ihrer Komponentenkategorie zugreifen. Wenn Sie also die Werte des Enums verwenden möchten, weisen Sie es (das Enum) einer Member-Variablen zu.

In Ihrer Komponente,

export class MyComp {
  MyEnum = MyEnum;
  .....
}   

Dann können Sie in Ihrer Vorlage auf die Elemente des Enums zugreifen.

Antwort #2

Sie können ein Enum verwenden, um es wie unten gezeigt einem HTML-Element zuzuweisen

@Component({
  selector: 'my-app',
  template: `
    <div>
      <h2>Hello {{name}}</h2>
      <input type="text" [(ngModel)]="value"/>
    </div>
  `,
})
export class App {
  name:string;
  myValue:any= MyEnum;
  value:string;
  constructor() {
    this.name = 'Angular2';
    this.value=this.myValue[1];
    console.log(this.value);
  }
}

Da Sie [(ngModel)] am Eingabeelement verwenden, können Sie die [value]-Eigenschaft des Eingabeelements nicht zuweisen.

LIVE-DEMO

Verwandte Artikel