angular 9获取渲染异步数据完成后的dom节点

本文深入探讨了在Angular9中如何有效获取异步数据渲染后的DOM节点,特别关注了使用@ViewChild结合set和get方法来实时跟踪DOM变化,解决了初始化阶段获取动态渲染节点的难题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

angular 9获取渲染异步数据完成后的dom节点

在学习angular的过程中,遇到过要根据情况操作dom节点。通常在初始化的时候会遇到一种情况,就是dom还没有将异步获取的数据渲染的时候。即使是ngAfterViewInit() 也同样获取不到dom的属性以及里面NgFor渲染的节点。百度出来的结果基本上都是文档上讲解基础的。并没有指出究竟如何获取。自学之路充满坎坷,在我在多次查阅文档之后终于找到了解决方案。希望能帮助更多的学习者。

@ViewChild()一般使用为

@ViewChild('dom') dom;

但是这样获取的dom节点是不会动态更新的,即使设置了{static :false}.其实就是默认值。

必须使用set()和get()才能获取及时更新之后的dom。

例子如下:

private _Pane;
@ViewChild(Pane)
  set pane(v: Pane) {
  	  this._Pane = v;
      this.selectedPane = v.id;
      //执行一些获取需求的操作。例如dom的clientHeight
  }
  get(){//可以不需要,根据上下文中是否需要使用Pane参数选择
  	return this._Pane
  }

里面的值都是响应式更新的,在dom重新渲染之后会再次执行。特别是使用ngFor渲染异步数据的时候,又想在初始化阶段获取dom里面的一些属性的时候,使用常规的方法并不能满足需求。即使是使用load的监听事件去操作,在不刷新页面的情况下,也还是不能满足需求的。

还是要发发牢骚,官方文档有给出如此类似的使用方法,但是并不友好。讲解的例子过于简单,解释说明也不是很清楚。让我百度都找不出解决方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值