将属性添加到Angular 2组件选择器

时间:2016-11-02 20:24:54

标签: angular typescript

我想将属性添加到我在angular 2组件实现中创建的自定义选择器。

@Component({
selector: 'my-node',     // add attributes to this selector 
template: `<div> <ng-content></ng-content> </div>`    
})

这样当我做<my-node>时,dom会生成带有这些额外属性的选择器

<my-node flex="25" layout="row">

我不希望每次<my-node>都对这些属性进行硬编码。我希望这些属性成为选择器构造模板的一部分。

像我这样的东西正在寻找但却没有在api中看到类似的东西

@Component({
selector: 'my-node',     
selectorAttributes: `layout="row"`  // generates <my-node layout="row">
template: `<div> <ng-content></ng-content> </div>`    
})

2 个答案:

答案 0 :(得分:8)

使用host元数据属性的@Component

@Component({
   selector: 'my-node',     // add attributes to this selector 
   template: `<div> <ng-content></ng-content> </div>`,
   host: { // this is applied to 'my-node' in this case
      "[class.some-class]": "classProperty", 
      "[attr.some-attr]": "attrProperty", 
   },   
})

以下是plunk示例。见app/app.component.ts

答案 1 :(得分:6)

另一种选择是使用HostBinding dectorator

@HostBinding('attr.layout')
layout = 'row';