0
以下は、ul li
要素をネストしました。私はそれをクリックすると、選択したノードli
の background-color
を変更したい、同時に変更する必要はありませんbackground-color
選択されていないノード。私は、任意のノード上の白にbackground-color
を変更するには、親のディレクティブを作成している選択されたliの色をネストされたul li要素から変更するための角度指示文
import { Directive,ElementRef,HostListener,ViewChild } from '@angular/core';
@Directive({
selector: '[Parent]'
})
export class ParentDirective {
constructor(private elem:ElementRef) {}
@HostListener('click') doOnClick(){
this.changeBackgroundColor("red");
}
private changeBackgroundColor(color: string) {
this.elem.nativeElement.style.backgroundColor = color;
}
}
<ul Parent>
<li Child>Child1</li>
<li Child>Child2</li>
<ul Parent>
<li Child>Child1</li>
<li Child>Child2</li>
<ul Parent>
<li Child>Child1</li>
<li Child>Child2</li>
<li Child>Child3</li>
<li Child>Child4</li>
<li Child>Child5</li>
</ul>
<li Child>Child3</li>
<li Child>Child4</li>
<li Child>Child5</li>
</ul>
<li Child>Child3</li>
<li Child>Child4</li>
<li Child>Child5</li>
</ul>
が選択され、子ノードディレクティブは、ノードの選択に赤に
background-color
を設定します。
import { Directive,ElementRef,HostListener,ViewChild } from '@angular/core';
@Directive({
selector: '[Child]'
})
export class ChildDirective{
constructor(private elem:ElementRef) {
this.printNativeElements(elem)
}
printNativeElements(elem){
this.liCount++;
console.log(elem.nativeElement.parentNode.children.length);
}
@HostListener('click') doOnClick(){
this.changeBackgroundColor("red");
}
private changeBackgroundColor(color: string) {
this.elem.nativeElement.style.backgroundColor = color;
}
}
もっと具体的にplnkr –
に詳しいことができます申し訳ありませんが、それほど時間はかかりませんが、http://stackblitz.comのサンプルをビルドして問題を実行すると、私は見ていきます –
あなたは 'Shared'が' ParentDirective'またはルート要素の親コンポーネントで提供されている場合レベルごとに選択した項目またはツリーごとに1つだけを持つようにしたい場合に。 –