dans mon Angular application, j'ai un composant:
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);
}
}
mais dans le "fait" la propriété j'ai une erreur. Je ne sais pas quoi faire avec ça ...
Je pense que vous utilisez la dernière version de TypeScript. Veuillez vous reporter à la section "Initialisation de classe stricte" dans link
.
Il y a deux façons de résoudre ce problème:
A. Si vous utilisez VSCode, vous devez changer la version de TS utilisée par l'éditeur.
B. Simplement initialiser le tableau lorsque vous le déclarez dans le constructeur,
makes: any[] = [];
constructor(private makeService: MakeService) {
// Initialization inside the constructor
this.makes = [];
}
Il suffit d'aller à tsconfig.json et de définir
"strictPropertyInitialization": false
se débarrasser de l'erreur de compilation.
Sinon, vous devez initialiser toutes vos variables, ce qui est un peu gênant
C'est parce que TypeScript 2.7 inclut une vérification de classe stricte où toutes les propriétés doivent être initialisées dans le constructeur. Une solution consiste à ajouter le !
en tant que postfixe au nom de la variable:
makes!: any[];
Vous devez soit désactiver le --strictPropertyInitialization
mentionné par Sajeetharan, soit faire quelque chose comme ceci pour satisfaire à l'exigence d'initialisation:
makes: any[] = [];
Vous pouvez également procéder comme suit si vous ne voulez vraiment pas l'initialiser.
makes: any[] | undefined;