在我的Angular应用中,我有一个组件:
import { MakeService } from './../../services/make.service';
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-vehicle-form',
templateUrl: './vehicle-form.component.html',
styleUrls: ['./vehicle-form.component.css']
})
export class VehicleFormComponent implements OnInit {
makes: any[];
vehicle = {};
constructor(private makeService: MakeService) { }
ngOnInit() {
this.makeService.getMakes().subscribe(makes => { this.makes = makes
console.log("MAKES", this.makes);
});
}
onMakeChange(){
console.log("VEHICLE", this.vehicle);
}
}
但是在“制造”属性中我犯了一个错误。
我不知道该怎么办……
新版本的typescript引入了严格的类初始化,这意味着你需要在构造函数体中初始化类中的所有属性,或者通过属性初始化器。在typescript文档中检查它
为了避免这种情况,您可以添加(!或者?
make!: any[] or make? : any[]
否则,如果您希望在项目中永久删除严格类检查
你可以在tsconfig中设置strictPropertyInitialization": false。json文件
" compilerOptions ": {
....
“noImplicitReturns”:假的,
....
“strictPropertyInitialization”:假的
},
这个已经在Angular Github的https://github.com/angular/angular/issues/24571上讨论过了
我认为这是每个人都会转向的方向
引用自https://github.com/angular/angular/issues/24571#issuecomment-404606595
For angular components, use the following rules in deciding between:
a) adding initializer
b) make the field optional
c) leave the '!'
If the field is annotated with @input - Make the field optional b) or add an initializer a).
If the input is required for the component user - add an assertion in ngOnInit and apply c.
If the field is annotated @ViewChild, @ContentChild - Make the field optional b).
If the field is annotated with @ViewChildren or @ContentChildren - Add back '!' - c).
Fields that have an initializer, but it lives in ngOnInit. - Move the initializer to the constructor.
Fields that have an initializer, but it lives in ngOnInit and cannot be moved because it depends on other @input fields - Add back '!' - c).
在我的Angular项目中添加Node时得到这个错误
TSError: ?无法编译TypeScript:
(路径)/ base.api。ts:19:13 -错误TS2564:属性'apiRoot
Path'没有初始化式,在构造函数中没有明确赋值。
private apiRootPath:字符串;
解决方案-
在tsconfig.json的compilerOptions中增加了"strictPropertyInitialization": false。
我的包。json -
"dependencies": {
...
"@angular/common": "~10.1.3",
"@types/express": "^4.17.9",
"express": "^4.17.1",
...
}
参考URL - https://www.ryadel.com/en/ts2564-ts-property-has-no-initializer-typescript-error-fix-visual-studio-2017-vs2017/
转到你的tsconfig。Json文件,并更改属性:
"noImplicitReturns": false
然后加上
"strictPropertyInitialization": false
在"compilerOptions"属性下。
你的tsconfig。Json文件应该是这样的:
{
...
"compilerOptions": {
....
"noImplicitReturns": false,
....
"strictPropertyInitialization": false
},
"angularCompilerOptions": {
......
}
}
希望这能有所帮助!!
祝你好运