我的服务
public submitBooking(createBooking: CreateBooking) {
const body = this.getSaveBookingRequestBody(createBooking);
//const json = JSON.Stringify(body) //It throws 415 error
return this.httpClient.post(this.baseUrl + 'Save', body )
.subscribe();
}
private getSaveBookingRequestBody(createBooking: CreateBooking): any {
const body = {
'Booking': {
'Header': this.getBookingHeader(createBooking), //It works fine.
'Items': [this.getBookingItems(createBooking)],
},
'TestOnly': !environment.production,
};
this.Logger.log(body);
return body;
}
private getBookingItems(createBooking: CreateBooking): any {
const bookingItem = {
'CountryOfOrigin': createBooking.booking.countryoforigin,
'VehicleValue': createBooking.booking.valueofvechicle,
'SerialNumber': createBooking.booking.bookingNumber,
'Description': createBooking.booking.description,
'Mobility': createBooking.booking.mobility,
'Currency': createBooking.booking.currency,
'Weight': createBooking.booking.weight,
'Year': createBooking.booking.year,
'Cbm': createBooking.booking.cbm,
//This is an array it doesn't work.
'SubUnits':[
createBooking.booking.relatedVehicles.forEach(element => {
const units = {
'RelationType': element.relation,
'Weight': element.weight,
'Year': element.year,
};
})],
};
return bookingItem;
当我创建POST主体时,
SubUnits
在WEB API中始终为空。如何遍历数组并创建一个对象作为正文发送。
我的角度模型和WEB-API对象是不同的
我也尝试了JSON.Stringify(unitsArray)
并将其返回给SubUnits
const unitsArray = [];
createBooking.booking.relatedVehicles.forEach(element => {
const units = {
'RelationType': element.relation,
'SerialNumber': element.chassisno,
'Weight': element.weight,
'Year': element.year,
};
unitsArray.push(units);
});
SubUnits : JSON.stringify(unitsArray); // It also doesn't work with API.
版本:Angular 5 Typescript 2.4.2
const bookingItem = {
...
'SubUnits': [
createBooking.booking.relatedVehicles.forEach(element => {
const units = {
'RelationType': element.relation,
'Weight': element.weight,
'Year': element.year,
};
})
]
...
};
这个循环不会填充bookingItem.SubUnits
中的数组。 Array.forEach
没有返回值。除此之外,从未使用变量units
。你可以做的是使用Array.map
创建一个新的数组。
'SubUnits': [
createBooking.booking.relatedVehicles.map(element => ({
'RelationType': element.relation,
'Weight': element.weight,
'Year': element.year
}))
]
这使得一个数组包含来自createBooking.booking.relatedVechiles
的1个数组元素。我不确定这是不是你想要的,但它在你的OP中。
你有没有尝试过不使用JSON.stringify?只需使用:
SubUnits :unitsArray;