在我的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);
}
}
但是在“制造”属性中我犯了一个错误。
我不知道该怎么办……
在我的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/
1)你可以像下面的代码一样应用它。当你这样做的时候,系统不会给出一个错误。
“明确赋值断言”(!)来告诉TypeScript我们知道这个值
详细信息
@Injectable()
export class Contact {
public name !:string;
public address!: Address;
public digital!: Digital[];
public phone!: Phone[];
}
2)第二种方法是在这里创建一个构造函数并定义值。
export class Contact {
public name :string;
public address: Address;
public digital: Digital[];
public phone: Phone[];
constructor( _name :string,
_address: Address,
_digital: Digital[],
_phone: Phone[])
{
this.name=_name;
this.address=_address;
this.digital=_digital;
this.phone=_phone;
}
}
3)第三种选择是创建一个get属性并按如下方式赋值
export class Contact {
public name :string="";
public address: Address=this._address;
get _address(): Address {
return new Address();
}
}