如何在Angular中创建一个基于给定属性改变行为的组件?
示例:
<my-comp [data]="data"></my-comp>
vs
<my-comp [data]="data" sortable> </my-comp>
<my-comp>
只是Component
女巫将数据显示为html列表。如果设置属性MyComponent
而不使用sortable
,是否可以检查@Input()
?
我是否必须定义Directive
或者我可以以某种方式访问该属性吗?
答案 0 :(得分:2)
我怀疑你可以使用@Attribute
装饰器
<强> my.component.ts 强>
@Component({
selector: 'my-comp',
template: `
<h1>Comp hasSortable {{ hasSortable }}</h1>
`
})
export class MyComponent {
hasSortable: boolean;
constructor(@Attribute('sortable') private sortable: any) {
this.hasSortable = sortable !== null;
}
}
<强> parent.component.html 强>
<my-comp></my-comp> // Prints "Child hasSortable false"
<my-comp sortable></my-comp> // Prints "Child hasSortable true"
<强> Plunker Example 强>
答案 1 :(得分:0)
类似的东西:
private _sortable:boolean = false;
@Input() sortable(val) {
if(val) {
this._sortable = true;
}
}