У меня есть простое приложение Angular 6 с материалом Angular выберите компонент, который мне нужен для двусторонней привязки к переменной перечисления. Для этого мне нужно преобразовать между строковым значением, которое используется для идентификации параметров, и значением перечисления, которое является фактическим типом Typescript. Чтобы преобразовать строку в перечисление, я всегда делал это (при условии, что Value1 является членом MyEnum):
let s: string = "Value1";
let myEnumVariable: MyEnum = MyEnum[s];
но это, похоже, не работает в операторах шаблонов Angular, например. для следующего:
app.component.html:
<mat-form-field>
<mat-select placeholder="Select a value" [value]="MyEnum[myVariable]" (valueChange)="myVariable = MyEnum[$event]">
<mat-option value="Value1">Value 1</mat-option>
<mat-option value="Value2">Value 2</mat-option>
</mat-select>
</mat-form-field>
app.component.ts:
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'app';
public myVariable: MyEnum = MyEnum.Value1;
public MyEnum = MyEnum;
}
enum MyEnum {
Value1,
Value2
}
Все в порядке при разработке с сервером разработки Angular. Но как только я запускаю ng build --prod
, появляется эта ошибка:
ОШИБКА в src\app\app.component.html(2,73): Тип «строка» не может быть назначен типу «MyEnum».
Почему это должно появиться в строительстве, а не в разработке? Есть идеи, как это исправить, не используя явный вызов метода в операторе шаблона?
Большое спасибо!
P.S. Я использую Typescript 2.7.2.
$event
какany
. - person yurzui   schedule 15.11.2018(change)="myVariable = MyEnum['' + $event];"
- person yurzui   schedule 15.11.2018