该代码在本地计算机上运行良好,但是在尝试使用构建版本时
ng build --prod
代码如下-
import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
import { Global } from 'src/app/global.variables';
export class FiltersComponent implements OnInit {
@ViewChild('extraMarkRadio') extraRadioRef: ElementRef;
constructor(
public global: Global
) {
}
ngOnInit() {
.....
}
checkExtraMarkRadio() {
const extra_radio = this.extraRadioRef;
extra_radio.checked = true;
}
}
在创建内部版本时,它会引发错误-
error TS2339: Property 'checked' does not exist on type 'ElementRef<any>'
如果我将代码行更改为-
const extra_radio = this.extraRadioRef.nativeElement;
然后构建会出现任何错误,但是在运行应用程序时会引发错误-
nativeElement is undefined.
答案 0 :(得分:0)
这可能有点令人困惑,但请尝试以下操作:
尝试以下
@ViewChild('extraMarkRadio' , {read: ElementRef}) extraRadioRef: ElementRef;
我们可以看到,我们正在传递第二个参数,该参数包含一个配置对象,其read属性设置为ElementRef。
如果有多个可能的可注入对象,则此read属性将确切指定我们要注入的对象。
在这种情况下,我们使用read属性指定要获取匹配模板引用的DOM元素(由ElementRef包装),而不是组件。
尝试使用组件类型而不是模板引用。