繁体   English   中英

Angular 中的多个模板引用变量

[英]Multiple template reference variable in Angular

在我的组件模板输入元素之一中,我创建了两个不同的引用变量,如下所示:

<input type="text" placeholder="..." #typeAhead="ngbTypeahead"
       #relationTypeInput>

PS:这不是确切的代码,但我的实际代码与此类似

在组件 ts 文件中,这些变量声明如下:

@ViewChild('typeAhead') typeAhead: NgbTypeahead;
@ViewChild('relationTypeInput') relationTypeInput: ElementRef;

然后我在 ngOnInit() 中使用前一个,在 ngAfterViewInit() 中使用后一个。 令我惊讶的是,我没有遇到任何错误并且它正在工作,但我不明白如何?

这是因为#typeAhead不是对元素的引用,在这种情况下是input 这就是为什么它在ngOnInit运行时被定义,而#relationTypeInput不是。

在更高版本的 Angular (v10+) 中,您需要使用ngAfterViewInit

在 v7 之前,Angular 表示ngOnInit不是一个可靠的生命周期钩子,可以从中引用ViewChild属性,但众所周知它是可靠的。 在 v8/9 中,您需要向ViewChild添加一个选项{static: true}以允许在ngOnInit引用该属性 - 但这对属性有其他影响(例如,在该点之后它将永远不会更新)

您可以在此处阅读有关它的更多信息https://angular.io/guide/static-query-migration

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM