Angular的ViewChild valueChange处理程序在组件被*ngIf隐藏和重新显示后停止触发。
创始人
2024-10-24 11:01:29
0

在Angular中,当使用ngIf指令隐藏和重新显示组件时,ViewChild的valueChange处理程序可能会停止触发。这是因为ngIf指令会从DOM中移除组件,并且重新显示时会重新创建组件。为了解决这个问题,可以使用ngAfterViewInit生命周期钩子来重新订阅valueChange事件。以下是一个示例:

在组件中定义ViewChild和订阅valueChange事件的代码:

import { Component, ViewChild, ElementRef, AfterViewInit, OnDestroy } from '@angular/core';
import { Subscription } from 'rxjs';

@Component({
  selector: 'app-my-component',
  template: `
    
` }) export class MyComponent implements AfterViewInit, OnDestroy { @ViewChild('myInput', { static: false }) myInput: ElementRef; private valueChangeSubscription: Subscription; public showComponent: boolean = true; ngAfterViewInit() { this.valueChangeSubscription = this.myInput.nativeElement.valueChanges.subscribe(() => { this.onValueChange(); }); } ngOnDestroy() { this.valueChangeSubscription.unsubscribe(); } onInputChange() { // Do something when input value changes } onValueChange() { // Do something when valueChange event is triggered } toggleComponent() { this.showComponent = !this.showComponent; } }

在上述示例中,我们使用了ViewChild装饰器来获取对输入元素的引用。然后,在ngAfterViewInit生命周期钩子中,我们订阅了valueChange事件,并在回调函数中调用了onValueChange方法。

另外,我们还实现了OnDestroy生命周期钩子,在组件销毁时取消了valueChange事件的订阅,以避免内存泄漏。

最后,在模板中使用了*ngIf指令来根据showComponent属性的值来显示或隐藏组件。通过调用toggleComponent方法,我们可以切换showComponent属性的值,从而隐藏或重新显示组件。

这样,当组件被隐藏和重新显示时,valueChange事件仍然会触发,并且可以正常处理。

相关内容

热门资讯

透视教材!wepoker破解是... 透视教材!wepoker破解是真的还是假的,WePoKer好友房原来真的是有安装,十分钟教程(有挂工...
透视项目!wepoker私局代... 透视项目!wepoker私局代打,WePoKer线上一直真的有脚本,第2分钟教程(有挂规律)在进入w...
透视教程书!aapoker辅助... 透视教程书!aapoker辅助软件合法吗,AApoker软件原来是真的有开挂,3分钟教程(确实有挂)...
透视演示!如何下载wpk透视版... 透视演示!如何下载wpk透视版,WPK安卓一贯存在有工具,第六分钟教程(有挂详细)1、上手简单,内置...
透视举措!aapoker俱乐部... 透视举措!aapoker俱乐部靠谱吗,AApoker发牌逻辑其实是有神器,六分钟教程(有挂技术)1、...
透视步骤!聚星ai辅助工具激活... 透视步骤!聚星ai辅助工具激活码,WePoKer透视底牌一直有工具,第6分钟教程(有挂方法)1、聚星...
透视妙招!德州hhpoker是... 透视妙招!德州hhpoker是真的吗,HHpoker开挂本来是真的有教程,九分钟教程(确实有挂)1、...
透视方式!德普之星透视免费,德... 透视方式!德普之星透视免费,德普之星埋牌原来真的是有透视,第三分钟教程(有挂秘籍)1、每一步都需要思...
透视大纲!德普之星有透视辅助吗... 透视大纲!德普之星有透视辅助吗,德普之星介绍竟然真的是有开挂,第九分钟教程(有挂教程)1、完成德普之...
透视模块!aapoker怎么设... 透视模块!aapoker怎么设置提高好牌几率,AApoker工具切实有脚本,第5分钟教程(确实有挂)...