使用参数作为对象 属性 链的一部分
Using parameters as part of an object property chain
在 Angular
中,我有如下所示的接口(这不是我的代码):
export interface Vehicles {
id: number;
cars: Car;
trucks: Truck;
}
Export interface Car {
make: number;
model: number;
}
Export interface Truck {
make: number;
model: number;
}
我的服务包含两个函数 doCarMath()
和 doTruckMath()
,它们根据 API 的返回值进行计算:
vehicleNumbers: Vehicles;
constructor(private http: HttpClient) {
this.vehicleNumbers = {};
}
callID(id: string): Observable<Vehicles>{
return this.http.get<Vehicles>(this.myURL+`/${id}`);
}
getMyCarNumbers(id) {
this.callID(id).subscribe(results =>
{
this.vehicleNumbers = results;
}
}
doCarMath(): number {
return this.vehicleNumbers.car.make; / this.vehicleNumbers.car.model;
}
doTruckMath(): number {
return this.vehicleNumbers.truck.make; / this.vehicleNumbers.truck.model;
}
我想通过传入一个参数来指定 car
或 truck
,将 doCarMath()
和 doTruckMath()
组合成一个 doMath()
函数,像这样:
doMath(p_vehicle): number {
return this.vehicleNumbers.p_vehicle.make/this.vehicleNumbers.p_vehicle.model; // can p_vehicle be used here?
}
这里如何使用参数p_vehicle
?以上为 p_vehicle
参数抛出智能感知错误,但我本地没有代码,无法共享错误。
我认为这可以完成工作:
doMath(p_vehicle): number {
return this.vehicleNumbers[p_vehicle].make/this.vehicleNumbers[p_vehicle].model;
}
那么调用该函数将是:
doMath('car'); // or this.doMath('car');
doMath('truck'); // or this.doMath('truck');
在 Angular
中,我有如下所示的接口(这不是我的代码):
export interface Vehicles {
id: number;
cars: Car;
trucks: Truck;
}
Export interface Car {
make: number;
model: number;
}
Export interface Truck {
make: number;
model: number;
}
我的服务包含两个函数 doCarMath()
和 doTruckMath()
,它们根据 API 的返回值进行计算:
vehicleNumbers: Vehicles;
constructor(private http: HttpClient) {
this.vehicleNumbers = {};
}
callID(id: string): Observable<Vehicles>{
return this.http.get<Vehicles>(this.myURL+`/${id}`);
}
getMyCarNumbers(id) {
this.callID(id).subscribe(results =>
{
this.vehicleNumbers = results;
}
}
doCarMath(): number {
return this.vehicleNumbers.car.make; / this.vehicleNumbers.car.model;
}
doTruckMath(): number {
return this.vehicleNumbers.truck.make; / this.vehicleNumbers.truck.model;
}
我想通过传入一个参数来指定 car
或 truck
,将 doCarMath()
和 doTruckMath()
组合成一个 doMath()
函数,像这样:
doMath(p_vehicle): number {
return this.vehicleNumbers.p_vehicle.make/this.vehicleNumbers.p_vehicle.model; // can p_vehicle be used here?
}
这里如何使用参数p_vehicle
?以上为 p_vehicle
参数抛出智能感知错误,但我本地没有代码,无法共享错误。
我认为这可以完成工作:
doMath(p_vehicle): number {
return this.vehicleNumbers[p_vehicle].make/this.vehicleNumbers[p_vehicle].model;
}
那么调用该函数将是:
doMath('car'); // or this.doMath('car');
doMath('truck'); // or this.doMath('truck');