Angular2 utiliser la valeur enum dans l'attribut de valeur html
j'essaie d'utiliser une valeur enum pour définir la valeur sélectionnée d'un attribut HTML:
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>
mais j'ai "Impossible de lire la propriété 'FirstValue' undefined"
Existe-t-il un moyen d'utiliser une valeur enum comme valeur des attributs html?
3 réponses
votre modèle ne peut accéder qu'aux variables membres de sa classe component. Ainsi, si vous voulez utiliser les valeurs d'enum, assignez-les (L'Enum) à une variable membre.
Dans votre composant,
export class MyComp {
MyEnum = MyEnum;
.....
}
alors vous êtes libre d'accéder aux éléments de l'enum dans votre modèle.
Vous pouvez utiliser un enum pour attribuer à l'élément html comme ci-dessous
@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);
}
}
puisque vous utilisez [(ngModel)] sur l'élément input, vous ne pouvez pas affecter à la propriété [value] de l'élément input.
Avec Angle 2 // enum
export enum IType
{
Vegitable=0,
Fruits=1,
Fish=2
}
// angulaire 2 Composant de type script
import {IType} from '/itype';
export class DataComponent
{
getType(id:number):any
{
return IType[id];
}
}
// dans votre fichier html
<div>
{{getType(1)}}
</div>