我试图将一个类应用于基于单击事件的HTML元素。Angular 2 - 将条件样式应用于指令的子元素HTML元素
[class.bordered]='isSelected(item)'
这将设置适当的风格被点击项目时:设置为从父组件模板子组件的选择类属性时所看到从父组件下面的片段也能正常工作。不过,我想设置一个内部HTML元素的类基于相同类型的单击事件的子组件,这里是为风格的子组件所需的目标:
template: `
<div class="This is where I really want to apply the style">
{{ item.val }}
</div>
`
有没有办法做到这一点这很容易支持?或者这被认为是一种不好的做法,我应该设计我的组件来避免这种有条件的样式情况?
全码:
@Component({
selector: 'parent-component',
directives: [ChildComponent],
template: `
<child-component
*ngFor='#item of items'
[item]='item'
(click)='clicked(item)'
[class.bordered]='isSelected(item)'>
</child-component>
`
})
export class ParentComponent {
items: Item[];
currentItem: item;
constructor(private i: ItemService) {
this.items = i.items;
}
clicked(item: Item): void {
this.currentItem = item;
}
isSelected(item: Items): boolean {
if (!item || !this.currentItem) {
return false;
}
return item.val === this.currentItem.val;
}
}
@Component({
selector: 'child-component',
inputs: ['item'],
template: `
<div class="This is where I really want to apply the style">
{{ item.val }}
</div>
`
})
export class ChildComponent {}
这解决了我的问题。感谢Gunter。 – Chris
虽然这确实解决了问题,但我更喜欢下面找到的更清洁的解决方案。 – Chris