我将引用Angular指南here并使用此示例代码。
自从我上次更新我的Visual Studio代码以来,我开始在我的组件中使用Angular装饰器(例如.ts
)修饰的属性下的Angular组件@Input
文件中获得红色下划线。在下面的示例代码中,我会在@Input() hero: Hero;
和@Input('master') masterName: string;
下面看到一个红色下划线:
import { Component, Input } from '@angular/core';
import { Hero } from './hero';
@Component({
selector: 'app-hero-child',
template: `
<h3>{{hero.name}} says:</h3>
<p>I, {{hero.name}}, am at your service, {{masterName}}.</p>
`
})
export class HeroChildComponent {
@Input() hero: Hero;
@Input('master') masterName: string;
}
以下是红色下划线的错误消息:
[ts]属性&#39; masterName&#39;没有初始值设定项,并且在构造函数中没有明确赋值。
我不知道为什么这些突然出现,我希望他们离开。我不喜欢做的是初始化为一些一次性值,这对于string
可能没问题,但对于像Hero
这样的类我绝对不希望有这样做。
提前致谢!
答案 0 :(得分:25)
检查您的tsconfig.json文件并确保strictPropertyInitialization
为false。
有关详细信息,请参阅本文档的“严格类初始化”部分:http://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html
注意:如果你有
"strict": true,
在你的tsconfig.json文件中设置,它现在会自动设置这个新的strict属性,并让你看到所有这些通知。
所以你可以把它改成:
"strict": true,
"strictPropertyInitialization": false,
答案 1 :(得分:0)
解决方案1:
创建一个初始化器
name: string;
constructor() {
this.name = '';
}
解决方案2:
将该属性设为可选
name?: string;
or
name: string|undefined;
解决方案3:
@DeborahK的解决方案。 在tsconfig.json中完成
"strict": true,
"strictPropertyInitialization": false,