首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

升级到angular 9后ViewChild无法正常工作

升级到Angular 9后,ViewChild无法正常工作的原因可能是由于Angular版本升级导致的一些变化和更新。在Angular 9中,对于ViewChild的使用有一些改动,需要进行相应的调整。

ViewChild是Angular中用于获取子组件或DOM元素的装饰器。在Angular 9之前的版本中,可以直接使用ViewChild来获取子组件或DOM元素的引用,例如:

代码语言:txt
复制
@ViewChild(ChildComponent) childComponent: ChildComponent;
@ViewChild('myElement') myElement: ElementRef;

但是在Angular 9中,由于对视图封装进行了一些改进,ViewChild的默认查询器已经更改为静态查询器。这意味着在模板初始化之前,无法通过ViewChild获取到子组件或DOM元素的引用。

为了解决这个问题,可以使用动态查询器来替代默认的静态查询器。动态查询器可以在模板初始化之后进行查询,确保ViewChild能够正常工作。例如:

代码语言:txt
复制
@ViewChild(ChildComponent, { static: false }) childComponent: ChildComponent;
@ViewChild('myElement', { static: false }) myElement: ElementRef;

在上面的代码中,通过将{ static: false }传递给ViewChild装饰器,可以使用动态查询器来获取子组件或DOM元素的引用。

另外,如果在Angular 9中使用ViewChild获取的是一个模板引用变量,需要使用{ read: TemplateRef }来指定查询的类型。例如:

代码语言:txt
复制
@ViewChild('myTemplate', { read: TemplateRef }) myTemplate: TemplateRef<any>;

关于Angular 9中ViewChild的更多详细信息,可以参考腾讯云的Angular文档:Angular ViewChild

总结起来,升级到Angular 9后,需要注意ViewChild的使用方式发生了变化,需要使用动态查询器来替代默认的静态查询器,并且对于模板引用变量,需要使用{ read: TemplateRef }来指定查询的类型。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券