使用@NgComponent map:const {}与class annotations

时间:2014-01-26 22:18:49

标签: dart angular-dart

我看到一些Angular dart样本使用以下形式指定属性绑定:

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

其他人注释个别字段:

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

我有理由想要使用一种形式而不是另一种吗?

接下来的问题:我可以混合使用这两种形式吗?

假设我有一个基类:

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

我可以从该基类继承,并让Angular选择注释吗?

2 个答案:

答案 0 :(得分:5)

我相信建议你使用注释,因为它们更具可读性。

有些用例可能需要使用旧式映射,例如,将该类重用于多个组件/指令/控制器:

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

如您所见,您可以定义不同的映射但使用相同的类。从理论上讲,这很少需要,但如果需要,它可以使用。

这两种表单目前都不支持继承。如果您对此感到强烈,请file a feature request

答案 1 :(得分:1)

仅供参考,现在有一个PR待处理添加对继承的支持,请检查"Add support for inheritance in Directives and Components"