在angular项目中,如何获取通过已渲染的视图控制显示与隐藏的另一个部分的视图的DOM元素

在Angular项目中,可以使用条件渲染和事件监听来实现一开始只加载部分UI,然后通过点击已加载出来的UI的图标来显示另外部分的UI,并获取这部分UI的DOM元素进行事件监听。

首先,可以使用`*ngIf`指令来根据条件渲染部分UI。例如,假设有一个按钮,点击该按钮会显示另外部分的UI:

<button (click)="showAdditionalUI = true">显示UI</button>

<div *ngIf="showAdditionalUI">
  <!-- 这里是另外部分的UI -->
</div>

在组件的代码中,需要定义`showAdditionalUI`变量并初始化为`false`:


export class YourComponent {
  showAdditionalUI = false;
}

这样,一开始只会渲染部分UI,当点击按钮时,`showAdditionalUI`变量的值会变为`true`,从而渲染并显示另外部分的UI。

接下来,如果想要获取这部分UI的DOM元素进行事件监听,可以使用Angular的视图引用(ViewRef)和`@ViewChild`装饰器。首先,在模板中给这部分UI的元素添加一个引用标识符:


<div *ngIf="showAdditionalUI" #additionalUI>
  <!-- 这里是另外部分的UI -->
</div>

然后,在组件的代码中使用`@ViewChild`装饰器来获取这个引用:


export class YourComponent implements AfterViewInit {
  showAdditionalUI = false;
  @ViewChild('additionalUI', { static: false }) additionalUIRef: ElementRef;

  ngAfterViewInit() {
    // 在这里可以访问和操作additionalUIRef.nativeElement,即这部分UI的DOM元素
    // 可以添加事件监听等操作
  }
}

在`ngAfterViewInit`生命周期钩子函数中,可以访问和操作`additionalUIRef.nativeElement`,即这部分UI的DOM元素。可以添加事件监听等操作。

其实我也尝试过,直接用setTimeOut方法直接在button的点击方法来实现Dom元素的获取和事件的监听,这样也是可行的,宏观方法!

import { Component, ViewChild, ElementRef, Renderer2 } from '@angular/core';

@Component({
  selector: 'app-my-component',
  templateUrl: './my-component.component.html',
  styleUrls: ['./my-component.component.css']
})
export class MyComponentComponent {
  isVisible = true;

  @ViewChild('myElement') myElementRef!: ElementRef;

  constructor() {}

  ngOnInit() {}

  onClick(event: Event) {
    this.isVisible = !this.isVisible;
    setTimeOut(() => {
        const myElement = this.myElementRef.nativeElement;
        myElement.addEventListener('', function());
    })
  }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值