angular - 属性 'map' 没有初始化程序,也没有在构造函数 @ViewChild 中明确分配
问题描述
我想获得一个带有 DOM 操作的 HTML 元素。当我尝试使用 ViewChild 获取元素时,会出现以下错误。当我单击快速修复时,它会添加 | 不明确的。但是这次我不能将变量称为 this.map
属性 'map' 没有初始化器,也没有在构造函数中明确分配。
import { Component, ElementRef, OnInit, ViewChild, AfterViewInit } from '@angular/core';
export class SlideComponent implements OnInit, AfterViewInit{
@ViewChild('el', { static: true}) map: ElementRef;
constructor() {
}
ngOnInit(): void {
}
ngAfterViewInit(){
console.log(this.map.nativeElement);
}
}
html元素
<div class="carousel_track_container" #el></div>
解决方案
当您使用 Angular 的严格模式时会发生这种情况。通过确保正确声明变量,您不会遇到错误变得非常谨慎。
换句话说,如果您向类添加一个全局变量,您要么必须在构造函数中设置它,要么添加 undefined 作为可能的返回类型。这是因为如果你不在构造函数中设置它,你可能根本不会设置它。
选项 1:您不确定是否需要使用它:
@ViewChild('el', { static: true}) map: ElementRef | undefined;
选项2:在构造函数中设置变量
注意:由于您使用的是 ViewChild,它尚不存在,因此您只能将其设置为未定义。
@ViewChild('el', { static: true}) map: ElementRef;
constructor() {
this.map = undefined;
}
推荐阅读
- angular - Angular 9:无法创建新项目
- ansible - Ansible include_tasks 给出语法错误
- java - 捕捉到InterruptedException后我们真的应该中断当前线程吗?
- php - 显示数据透视表数据
- weka - Weka 中树叶的数量和树的大小是什么意思?
- php - 为什么我的语句总是返回错误的 mysql num-rows?
- arrays - 嵌套列表最后一行元素重复所有前面的行
- ajax - 这个 Spring-Ajax 示例有什么问题
- java - Android 画布区域不是全屏的。如何设置画布区域?
- python - 在 Python 应用程序中准备 JSON 以供 React 使用