Angular 8 @ViewChild - 返回 undefined。
创始人
2024-10-17 13:02:01
0次

在Angular 8中,当使用@ViewChild装饰器时,有时可能会遇到返回undefined的问题。通常,这是由于在组件的生命周期钩子中访问ViewChild时引起的。

要解决这个问题,可以使用ngAfterViewInit生命周期钩子来确保在视图和相关的ViewChild元素初始化之后再访问它们。

下面是一个示例代码,展示了如何解决这个问题:

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

@Component({
  selector: 'app-my-component',
  template: `
    
My Div Content
`, }) export class MyComponent implements AfterViewInit { @ViewChild('myDiv', { static: false }) myDiv; ngAfterViewInit() { console.log(this.myDiv); // 输出正确的元素引用 } }

在上面的代码中,我们在模板中使用了一个带有#myDiv的div元素,然后使用@ViewChild装饰器来获取对它的引用。

在组件中,我们实现了ngAfterViewInit生命周期钩子,并在其中访问ViewChild。通过将static参数设置为false,我们确保ViewChild在视图初始化之后才会被访问。

这样,我们就可以确保ViewChild不再返回undefined,并且可以正确地访问它。

请注意,从Angular 9开始,static默认值为true,这意味着不再需要手动设置它。但是,在Angular 8中,我们仍然需要将其设置为false来解决这个问题。

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...