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事件仍然会触发,并且可以正常处理。

相关内容

热门资讯

经核实!微乐小程序免费黑科技,... 经核实!微乐小程序免费黑科技,微信微乐辅助插件(透视)原来有辅助技巧(哔哩哔哩)1、完成有辅助插件,...
透视方针!德州透视插件(WPK... 透视方针!德州透视插件(WPK辅助器)都是是有辅助工具(哔哩哔哩)1、德州透视插件免费辅助多个强度级...
随着!微乐小程序免费黑科技,微... 随着!微乐小程序免费黑科技,微信小程序辅助器免费版(透视)好像是真的辅助教程(哔哩哔哩)1、用户打开...
透视办法!werplan外开挂... 透视办法!werplan外开挂(HHpoker控制)原来真的有辅助工具(哔哩哔哩);暗藏猫腻,小编详...
迎来新发展!微信微乐游戏辅助脚... 迎来新发展!微信微乐游戏辅助脚本,微信小程序游戏破解微乐辅助(透视)竟然真的是有辅助app(哔哩哔哩...
透视方案!wepoker手机版... 透视方案!wepoker手机版辅助(HHpoker下载)真是是真的有辅助方法(哔哩哔哩)1、wepo...
2026版教程!微乐小程序免费... 2026版教程!微乐小程序免费黑科技,微乐小程序插件免费(透视)本来是真的辅助插件(哔哩哔哩)1、上...
透视秘籍!德州机器人代打脚本(... 透视秘籍!德州机器人代打脚本(HHpoker插件)一直真的有辅助脚本(哔哩哔哩)1、不需要AI权限,...
插件辅助挂!微乐小程序黑科技,... 插件辅助挂!微乐小程序黑科技,微乐家乡小程序自建房辅助app(透视)都是是真的辅助教程(哔哩哔哩);...
透视资料!红龙poker辅助平... 您好,红龙poker辅助平台这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054】...