Можно ли использовать перечисления в шаблонах AngularDart? Как? - PullRequest
0 голосов
/ 14 ноября 2018

Если у меня есть перечисление, например:

@Component(...)
class MyComponent {

    MyEnum myEnum;
    ...
}

Как я могу использовать это перечисление в шаблоне? Э.Г.

<div *ngIf="myEnum == MyEnum.SOME_OPTION">
    ...
</div>

Редактировать: меня особенно интересует, как использовать перечисления в сравнении.

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

С https://github.com/dart-lang/angular/blob/7f6858bc48c1d2a454a4bc350077d67c277c6516/angular/lib/src/core/metadata.dart#L206-L221

  /// A list of identifiers that may be referenced in the template.
  ///
  /// ## Small Example
  ///
  /// Suppose you want to use an enum value in your template:
  ///
  ///     enum MyEnum { foo, bar, baz }
  ///
  ///     @Component(
  ///       selector: 'example',
  ///       exports: const [MyEnum],
  ///       template: '<p>{{MyEnum.bar}}</p>',
  ///     )
  ///     class Example {}
  ///
  final List<Object> exports;

См. Также https://github.com/dart-lang/angular/blob/master/angular/CHANGELOG.md#new-features-6

0 голосов
/ 14 ноября 2018

Я нашел способ. Я полагаю, это немного хакерски, но это работает.

Дайте перечислению метод получения, который возвращает строку. Преобразуйте перечисление в шаблоне в строку, заключив его в одинарные кавычки. Теперь сравните две строки.

String get choice => myEnum.toString();
...
choice == 'MyEnum.SOME_OPTION'
...