在我的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严格的特性:
@ViewChild(MatSort, {static: true}) sort!: MatSort;
如果在tsonfig中禁用typescript新的严格特性。json和
"compilerOptions": {
///
,
"strictPropertyInitialization":false
}
旧的Angular指南代码工作得很好
@ViewChild(MatSort) sort: MatSort;
这里有4种方法来解决这个问题
Arunkumar Gudelli (2022) https://www.angularjswiki.com/angular/property-has-no-initializer-and-is-not-definitely-assigned-in-the-constructor/
新版本的typescript引入了严格的类初始化,这意味着你需要在构造函数体中初始化类中的所有属性,或者通过属性初始化器。在typescript文档中检查它
为了避免这种情况,您可以添加(!或者?
make!: any[] or make? : any[]
否则,如果您希望在项目中永久删除严格类检查
你可以在tsconfig中设置strictPropertyInitialization": false。json文件
" compilerOptions ": {
....
“noImplicitReturns”:假的,
....
“strictPropertyInitialization”:假的
},