Angular 12 ViewChild ElementRef
Angular 12 ViewChild ElementRef
在以前的 angular 版本中,我们可以像这样
定义一个带有元素引用的 viewchild
@ViewChild('fileInput') fileInput: ElementRef;
现在我们必须在构造函数中初始化它?如果没有默认的 nativeelement,我们如何为 elementRef 执行此操作?
元素 Ref 接受一个参数 https://angular.io/api/core/ElementRef
constructor() {
this.fileInput = new ElementRef(?);
}
如果要访问 ViewChild 元素,只能在 AfterViewInit/ 之后进行AfterViewChecked 生命周期已顺其自然。您不需要手动创建它,Angular 会为您完成。
您可以在 Angular Example 2.
中看到这种情况
但是,请记住,在构造函数 ngOnInit 中无法访问它。
如果你想访问你自己的元素组件 ElementRef,你可以这样做:
@Component(...)
export class CustomComponent {
constructor(elementRef: ElementRef) {
// Code here or store it via an attribute accessor
}
}
而不是:
@ViewChild('fileInput') fileInput: ElementRef;
使用:
@ViewChild('fileInput') fileInput!: ElementRef;
它应该可以正常工作。
在以前的 angular 版本中,我们可以像这样
定义一个带有元素引用的 viewchild@ViewChild('fileInput') fileInput: ElementRef;
现在我们必须在构造函数中初始化它?如果没有默认的 nativeelement,我们如何为 elementRef 执行此操作? 元素 Ref 接受一个参数 https://angular.io/api/core/ElementRef
constructor() {
this.fileInput = new ElementRef(?);
}
如果要访问 ViewChild 元素,只能在 AfterViewInit/ 之后进行AfterViewChecked 生命周期已顺其自然。您不需要手动创建它,Angular 会为您完成。 您可以在 Angular Example 2.
中看到这种情况但是,请记住,在构造函数 ngOnInit 中无法访问它。
如果你想访问你自己的元素组件 ElementRef,你可以这样做:
@Component(...)
export class CustomComponent {
constructor(elementRef: ElementRef) {
// Code here or store it via an attribute accessor
}
}
而不是:
@ViewChild('fileInput') fileInput: ElementRef;
使用:
@ViewChild('fileInput') fileInput!: ElementRef;
它应该可以正常工作。