Я не знаю о ListView, но я всегда могу использовать директиву для получения ElementRef.Если у вас есть ElementRef, вы можете получить el.nativeElement.offsetTop.
Итак, единственное, что он может сделать, например:
@Directive({
selector: '[pos]'
})
export class PosDirective {
@Input('pos') index:number;
el:ElementRef
constructor(el:ElementRef){
this.el=el;
}
}
Нашей директиве нужен индекс.Я привел простой пример использования ngFor в <p>
<p [pos]="i" *ngFor="let item of data;let i=index">{{item}}</p>
<button (click)="showPos(0)">click</button>
Мы "получаем p" (действительно, директива), используя ViewChildren
@ViewChildren(PosDirective)positions:QueryList<PosDirective>;
showPos(index:number)
{
const elem=(this.positions.toArray()[index]) as PosDirective;
console.log(elem.el.nativeElement.offsetTop)
}
См. stackblitz