viewchildren 的 offsettop 和 offsetleft

Posted

技术标签:

【中文标题】viewchildren 的 offsettop 和 offsetleft【英文标题】:offsettop and offsetleft for viewchildren 【发布时间】:2017-06-11 13:41:14 【问题描述】:

我在 *ngFor 中有一个动态创建的组件,我如何在 ViewChildren 中获取这些组件的 offsettop 和 offsetleft。

模板

<anchor #myanchor></anchor>

@ViewChildren('myanchor') anchors: QueryList<any>;

这里是 ngAfterViewInit

ngAfterViewInit()
    this.anchors.map(i=> console.log(i); )

我可以通过 ViewChild 获得单个元素的位置,但需要 ViewChildren 的帮助。任何指针将不胜感激。

【问题讨论】:

【参考方案1】:
ngAfterViewInit()
    this.anchors.toArray()
    .map(i=> console.log(i.nativeElement.offsetTop); )

如果 #myanchor 位于组件或指令上而不是普通 DOM 元素上,则需要添加 read 以获取 ElementRef

@ViewChildren('myanchor', read: ElementRef) anchors: QueryList<ElementRef>;

另见angular 2 / typescript : get hold of an element in the template

【讨论】:

谢谢甘特。元素上的 offsetTop 或 offsetHeight 显示父元素中的相对高度。有没有办法获取页面上的绝对坐标? 不知道,不过和普通的JS一样。

以上是关于viewchildren 的 offsettop 和 offsetleft的主要内容,如果未能解决你的问题,请参考以下文章

dart:用查询替换 ViewChildren

如何使用 ViewChildren 使用模板变量获取多个本机元素?

Angular DOM 操作:为啥 ViewChildren 有效而 ViewChild 无效

Angular ViewChildren 不会立即看到来自 ngFor 的所有孩子

Angular2 中的 ViewChildren 装饰器可以与接口一起使用吗?

Jquery中用offset().top和offsetTop的比较