javascript - 如何选择 *ngIf 渲染的动态元素 (实用、赞)

本文介绍了在Angular中,如何使用@ViewChildren和QueryList来获取由*ngIf条件渲染的动态DOM元素,对比了与@ViewChild的区别,强调了@ViewChildren适用于实时渲染的场景。
摘要由CSDN通过智能技术生成

 原文出处:javascript - 如何选择 *ngIf 渲染的动态元素 - IT工具网

延伸阅读:(获取动态元素的值)Angular如何通过@ViewChildren获取实时渲染的动态DOM节点元素(@ViewChild只能获取静态的固定DOM节点)

最佳答案
利用@ViewChildren ... QueryList<>ngAfterViewInit() 实现;

@Component({
  selector: 'my-app',
  template: `
    <button (click)="prop = !prop">toggle</button>

    <div class="test" *ngIf="prop">
      <a #button id="button1">button1</a>
    </div>

    <div class="test" *ngIf="!boolean">
      <a #button id="button2">button2</a>
    </div>`
 ,
})
export class App {
  @ViewChildren('button') button: QueryList<ElementRef>;

  prop:boolean = true;

  ngAfterViewInit() {
    console.log(this.button.toArray());

    this.button.changes.subscribe(val => {
      console.log(this.button.toArray());     //元素变化时触发
    });

  }
}

关于javascript - 如何选择 *ngIf 渲染的动态元素,我们在Stack Overflow上找到一个类似的问题: javascript - How can I select dynamic elements rendered by *ngIf - Stack Overflow 

总结:
1、@ViewChild只能获取静态的固定DOM节点;

2、@ViewChildren可获取实时渲染的动态DOM节点元素

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值