Obtenga el ancho, la altura y el desplazamiento del div cliqueado - Angular 2
Tengo una plantilla que crea una lista de enlaces usando*ngFor
y un elemento div separado que quiero cambiar su ubicación en función del enlace activo actualmente.
Modelo:
<div #divHandle
*ngFor="let link of links; let i = index"
class="div-link"
(click)="changeActiveLink(i)">
<h2>{{link}}</h2>
</div>
<div
[@indexState]="activeLink"
id="highlighter"></div>
Esto da como resultado una estructura como esta:
<div class="div-link">
<div (click)="changeActiveLink(0)"><h2>Link 1</h2></div>
<div (click)="changeActiveLink(1)"><h2>Link 2</h2></div>
<div (click)="changeActiveLink(2)"><h2>Longer link 1</h2></div>
<div (click)="changeActiveLink(3)"><h2>Longer link 2</h2></div>
</div>
<div id="highlighter"></div>
Quiero que mi marcador resaltador obtenga el ancho deLink 1
cuandoactiveLink = 0
. Similar a este simple js:
var High = document.getElementById('highlighter');
High.style.width = document.getElementsByClass('div-link')[0].children[activeLink].offsetWidth; //activeLink = 0
En miapp.component.ts
archivo:
import { Component, AfterViewInit, ViewChildren, Directive, QueryList, ElementRef} from '@angular/core';
@Directive({selector: '[class~=div-link]'})
@Directive({selector: '.div-link'}) // variant
@Directive({selector: '#divHandle'}) // variant
@Directive({selector: '[divHandle]'}) // variant
export class ChildDirective {
constructor(elem: ElementRef){}
}
@Component({
selector: 'my-app',
...
})
export class AppComponent implements AfterViewInit {
@ViewChildren(ChildDirective) childrenContent: QueryList<ChildDirective>;
ngAfterViewInit(){
console.log(this.childrenContent);
}
}
Cuando registro elchildrenContent
Yo tengo unQueryList
objeto, pero está vacío, no hay elementos para obtener información.
He intentado varios@Directive
selectores y siempre miQueryList
esta vacio.