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

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的监听事件去操作,在不刷新页面的情况下,也还是不能满足需求的。

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

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Angular使用angular-gridster库,可以通过使用其提供的事件和方法来获取拖拽后的数据。 首先,我们需要在HTML文件设置Gridster组件,并声明一个用于展示数据的数组: ```html <gridster [options]="gridsterOptions" (gridsterItemChange)="onItemChange($event)"> <gridster-item *ngFor="let item of gridsterItems" [item]="item"> <!-- content --> </gridster-item> </gridster> ``` 在组件的.ts文件,需要定义gridsterOptions和gridsterItems变量,并使用相关的事件和方法来获取拖拽后的数据: ```typescript import { Component } from '@angular/core'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { gridsterOptions = { // gridster options }; gridsterItems = [ // initial items ]; onItemChange(event: any) { // get gridster item change event console.log(event); // here you can access the dragged item's updated data } } ``` 在onItemChange方法,可以通过event参数访问拖拽后的数据。它包含了当前拖拽的GridsterItemComponent实例,我们可以从获取更新后的数据。 例如,可以通过event.item获取更新后的位置信息、尺寸信息等。如果有其他自定义的数据需要获取,可以在GridsterItemComponent设置相关属性并在event.item访问。 以上是使用angular-gridster获取拖拽后数据的基本方法,你可以根据自己的需求进行进一步定制和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值