Использование карты @NgComponent: const {} против аннотаций класса

Я вижу, что некоторые образцы дротика Angular указывают привязку атрибута, используя эту форму:

@NgComponent(
  selector: 'foobar',
  publishAs: 'foo',
  map : const { "label" : "@label"}
)

В то время как другие аннотируют отдельные поля:

class FooBar {
  @NgOneWayOneTime("label")
  String label;
 }

Есть ли причина, по которой я хотел бы использовать одну форму вместо другой?

И следующий вопрос: могу ли я смешивать и сочетать две формы?

Скажем, у меня есть базовый класс:

MyBase {
   @NgOneWay("label")
   String label; 
}

Могу ли я наследовать от этого базового класса и заставить Angular подобрать аннотацию?


person Warren Strange    schedule 26.01.2014    source источник


Ответы (2)


Я считаю, что вам рекомендуется использовать аннотации, поскольку они гораздо более читабельны.

Есть несколько вариантов использования, когда вы можете захотеть использовать карту старого стиля, например, повторно используя класс для нескольких компонентов/директив/контроллеров:

@NgComponent(selector: 'foo', map: const {'attr-a': '=>attrA'})
@NgComponent(selector: 'bar', map: const {'attr-a': '=>!attrA'})
class FooBarComponent {
   String attrA;
}

Как видите, вы можете определить разные сопоставления, но использовать один и тот же класс. Теоретически это редко требуется, но при необходимости это доступно.

Ни одна из форм в настоящее время не поддерживает наследование. Пожалуйста, отправьте запрос на добавление функции, если вы твердо настроены по этому поводу.

person pavelgj    schedule 27.01.2014
comment
Что значит =›! иметь в виду? Моим первым гостем было бы отрицание значения перед его присвоением, но это не имеет смысла для строки. [Edit] Упс, только что увидел вопрос ... который отвечает на мой вопрос :). - person Patrice Chalin; 29.01.2014

К вашему сведению, в настоящее время ожидается PR для добавления поддержки наследования, отметьте "Добавить поддержку наследования в Директивы и компоненты"

person vicb    schedule 17.04.2014