NativeScript Angular项目@ViewChild参数缺失报错(ts(2554))求助
解决NativeScript Angular中@ViewChild参数缺失的错误
你碰到的这个错误是因为Angular 8及更高版本对@ViewChild装饰器的语法做了强制更新——现在必须传入第二个参数来指定元素查询的时机(static属性),而你从Marketplace复制的代码沿用了旧版语法,只传了选择器参数,所以触发了类型检测错误。
修复步骤
直接修改LoginComponent里的@ViewChild声明,补充第二个配置参数即可:
// 替换原来的两行@ViewChild代码 @ViewChild("password", { static: true }) password: ElementRef; @ViewChild("confirmPassword", { static: true }) confirmPassword: ElementRef;
关于static参数的小说明
- 设为
true:表示在组件初始化(ngOnInit执行前)就完成元素查询,适合那些不会被*ngIf等结构指令动态显示/隐藏的固定元素 - 设为
false:表示在组件变更检测完成后再执行查询,适合动态渲染的元素
在你的登录组件里,这两个密码输入框是固定在模板中的,不会被动态切换显示,所以用{ static: true }完全适配场景。
功能验证
修改完成后重新运行项目,模拟器加载时应该能正常检测未登录状态并展示登录页面,同时之前的TypeScript错误也会彻底消失。
内容的提问来源于stack exchange,提问作者Charlie Pope
相关产品推荐
相关产品推荐

