Ich versuche, eine Klasse auf ein HTML-Element basierend auf einem Klickereignis anzuwenden. Dies funktioniert gut, wenn die Klasseneigenschaft für das Kind Komponente Wähler aus der Vorlage übergeordneten Komponente einstellen, wie durch den folgenden Ausschnitt aus der übergeordneten Komponente gesehen:Angular 2 - Anwenden bedingter Stil auf das untergeordnete HTML-Element einer Direktive
[class.bordered]='isSelected(item)'
Dies wird in geeignete Weise den Stil festgelegt, wenn das Element angeklickt wird. Allerdings habe ich ein inneres HTML-Element der Klasse in der untergeordneten Komponente auf der gleiche Art von Klickereignis basierend festlegen möge, ist hier das gewünschte Ziel für den Stil für das Kind Komponente:
template: `
<div class="This is where I really want to apply the style">
{{ item.val }}
</div>
`
Gibt es eine Möglichkeit, dies zu tun das wird leicht unterstützt? Oder ist dies eine schlechte Übung und ich sollte meine Komponenten so konstruieren, dass diese bedingte Styling-Situation vermieden wird?
Voll Code:
@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 {}
Das ist mein Problem gelöst. Danke Gunter. – Chris
Während dies das Problem gelöst hat, bevorzuge ich die sauberere Lösung, die ich unten gefunden habe. – Chris