У меня есть простое приложение Angular 6 с Angular Material выберите компонент , который я хотел бы двусторонне связать с переменной enum.Для этого мне нужно преобразовать строковое значение, которое используется для определения параметров, и значение перечисления, которое является фактическим типом Typescript.Чтобы преобразовать строку в enum, я всегда делал это (предполагая, что 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
}
Все хорошо при разработкес угловым сервером разработки.Но как только я запускаю ng build --prod
, появляется эта ошибка:
ОШИБКА в src \ app \ app.component.html (2,73):: Тип 'string' не может быть назначен типу 'MyEnum'.
Почему это могло бы появиться в строительстве, а не в разработке?Любая идея, как это исправить, не используя явный вызов метода в инструкции шаблона?
Большое спасибо!
PS Я использую Typescript 2.7.2