我試圖將一個類應用於基於單擊事件的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