【问题标题】:ViewChild element undefined when referenced before view initialized在视图初始化之前引用时未定义 ViewChild 元素
【发布时间】:2020-10-07 23:20:49
【问题描述】:

我想要达到的目标如下

使用字符串访问 ViewChild 然后向其添加类

但它给出了这个错误“无法读取未定义的属性'nativeElement'”

@ViewChild('projects', { static: false }) projects: ElementRef;

someFunc(){

  let data = 'projects'
  let elementToMarkActive = this[data]

  elementToMarkActive.nativeElement.classList

}

【问题讨论】:

  • 你引用了奇怪的元素——为什么不只是this.projects?这也取决于时间(如果您从 ngOnInit 调用 someFunc,则需要在 ViewChild 装饰器参数上将“static”设置为 true),或者,该元素可能由于其他原因不存在。你有一个标有#projects 的元素吗?当您调用someFunc 时,元素上是否有可能导致它不存在的*ngIf
  • 如果显示模板会更容易诊断。
  • 是的,很奇怪,这里的数据是从订阅到 observable 的字符串,有问题的代码是一个演示,将“静态”设置为 true 解决了,非常感谢

标签: angular typescript


【解决方案1】:

如果 static 参数设置为 true,则使用 ViewChild 装饰器选择的元素在 ngOnInit(或视图呈现和初始更改检测之前的任何其他生命周期阶段)中不可用。

请参考the documentation for ViewChild了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-19
    • 2019-11-19
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    相关资源
    最近更新 更多