Я пытаюсь выучить Angular из онлайн-курса, но в курсе используется более старая версия Angular, до сих пор я не мог адаптироваться к Angualar 7, но теперь я застрял в этой проблеме:
В компоненте он определяет объект Vehicle типа any и устанавливает его значение с помощью API, например:
"vehicle: any = {
features: [],
contact: {}
};"
ngOnInit() {
var sources =[]; //I omitted the other properties
if(this.vehicle.id)
sources.push(this.vehicleService.getVehicle(this.vehicle.id));
forkJoin(sources).subscribe(data => {
if (this.vehicle.id)
this.Vehicle= data[0];
});
Код API:
getMakes() {
return this.http.get('/api/makes')
.map(res => res.json());
}
Поскольку я использую Angular7 Я изменил код API на это:
getVehicle(id){
return this.http.get<any>('api/vehicles/'+id);
}
И это сработало как шарм.Но теперь он изменил код для использования моделей (копия моделей, используемых в API) следующим образом:
vehicle: SaveVehicle = {
id:0,
makeId: 0,
modelId: 0,
isRegistered: false,
features: [],
contact: {
name: '',
email: '',
phone: '',
}
};
ngOnInit() {
var sources =[]; //I omitted the other properties
if(this.vehicle.id)
sources.push(this.vehicleService.getVehicle(this.vehicle.id));
forkJoin(sources).subscribe(data => {
if (this.vehicle.id)
this.setVehicle(data[0]);
});
private setVehicle(vehicle: Vehicle) {
this.vehicle.id = vehicle.id;
this.vehicle.makeId = vehicle.make.id;
this.vehicle.modelId = vehicle.model.id;
this.vehicle.isRegistered = vehicle.isRegistered;
this.vehicle.contact = vehicle.contact;
this.vehicle.features = _.pluck(vehicle.features,'id');
}
Когда я изменил метод, эта строка
this.setVehicle(data[0]);
бросаетисключение:
Аргумент типа 'any []' не может быть назначен параметру типа 'Vehicle'.У типа 'any []' отсутствуют следующие свойства из типа 'Vehicle': id, модель, марка, isRegistered и т. Д.
Я изменил тип возврата вызова API на Vehicle, он работаетно тогда я больше не могу использовать массив sources , потому что другие Observables в массиве имеют разные типы.Должен ли я использовать любой в качестве возврата вызова API?Есть ли способ сохранить массив источников при изменении типа возвращаемого значения на Транспортные средства?Могу ли я разыграть из "любого" в Транспортное средство?
В одном вопросе: Что мне здесь делать?