【问题标题】:Property 'selectedHero' has no initializer and is not definitely assigned in the constructor属性 'selectedHero' 没有初始值设定项,也没有在构造函数中明确分配
【发布时间】:2021-05-07 01:07:50
【问题描述】:

我学习了 Angular,但我对教程有疑问。所以我在这里https://angular.io/tutorial/toh-pt2 你可以看到这条线

  selectedHero: Hero;

问题是我有错误

属性 'selectedHero' 没有初始化器,也不确定 在构造函数中赋值。

我找到了解决这个问题的方法。我写了

selectedHero!: Hero;

它可以正常工作,但不是很好的做法。知道如何更好地编码吗?

【问题讨论】:

  • 从哪里得到错误信息?从来没有过。通常第一种方法就可以了
  • 从终端和 VSC

标签: javascript angular frontend


【解决方案1】:

这是因为 TypeScript 2.7 包含一个严格的类检查,所有属性都应该在构造函数中初始化。

解决方法:

  1. 在您的 tsconfig.json 文件中将 strictPropertyInitialization 设置为 false
"strictPropertyInitialization": false

这将禁用所有项目的严格检查属性初始化。 2. 用默认值初始化你的属性

 selectedHero: Hero = null;
  1. 如果您不喜欢初始化的想法,可以将属性标记为可选,或者将其设为英雄类型或未定义:
 selectedHero?: Hero;
// or
selectedHero: Hero | undefined

【讨论】:

  • 第一种方法不起作用。在 tsconfig.json 我没有“strictPropertyInitialization”属性。我添加了它,但它不起作用。第二部作品,但“?”是什么意思?在 Angular 中
  • 1-重启你的 vscode。 2-“?”是一种打字稿符号,表示该属性是可选的,它可能存在或不存在(已定义或undefined
  • 当我这样做时,我对 ngModel 的哪个用户这个 var 有疑问,
  • 你能在你的 ngModel 绑定中粘贴你是如何使用它的吗?
【解决方案2】:

使属性可选

selectedHero ?: 英雄;

【讨论】:

    猜你喜欢
    • 2021-12-25
    • 1970-01-01
    • 2021-04-09
    • 2021-07-10
    相关资源
    最近更新 更多