0
다음과 같이 중첩 된 ul li
요소가 있습니다. 변경하고자하는 노드 background-color
선택하지 않은 노드 background-color
은 변경하지 말아야합니다. 내가 어떤 노드에서 흰색에 background-color
를 변경하는 부모 지침을 만든 중첩 된 요소에서 선택한 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' 또는 루트 요소의 부모 구성 요소에서 제공되는 경우 레벨 당 선택한 항목을 갖기를 원하면 트리 당 하나만 선택하십시오. –