функция возвращает json, но когда я даю console.info(this.metodo), консоль возвращается с неопределенным, функция находится в ngOnit приложения, я не знаю, что я мог делать неправильно, в коде Я пробовал с обещанием и с подпиской
public metodo:any;
ngOnInit(): void {
/*
this.cartS.getTransporteMetodo(this.storeS.layout.emp.id).toPromise().then(res=>
{JSON.stringify(console.info(res))})
*/
this.cartS.getTransporteMetodo(this.storeS.layout.emp.id).subscribe((res) => {
this.metodo = res;
console.info(this.metodo);
});
}
Обслуживание
getTransporteMetodo(empId){
return this.http.post(environment.API_URL + 'transporte/getAll', { empId });
}
json
[
{
"id": 1,
"emp_id": 1,
"nome": "Retirada na Loja",
"tipo": "RETIRA",
"subtipo": null,
"latLng": [-25.45264, -49.26653],
"vFreteMin": 0,
"vFreteGratis": null,
"periodos": [
{
"id": 8,
"transporte_id": 1,
"ativo": 1,
"periodo": "Comercial (das 8h \u00e0s 19h)",
"corte": "17:00",
"data": null,
"week": []
}
]
},
]
На this.cartS.getTransporteMetodo(this.storeS.layout.emp.id).toPromise().then(res=> {JSON.stringify(console.info(res))}) res возвращает undefined
/* this.cartS.getTransporteMetodo(this.storeS.layout.emp.id).subscribe((res) => { this.metodo = res; console.info(res); }); */ с подпиской ничего не возвращает, не знаю, что я делаю не так в обоих режимах
Сначала попробуйте это и дайте мне знать this.cartS.getTransporteMetodo(this.storeS.layout.emp.id).subscribe((res) => { console.info(res); });
в этом коде, который вы отправили, он ничего не возвращает на консоль
он делает запрос getAll, но ничего не возвращает в консоли, и запрос возвращает обычный json
Я думаю, что проблема связана с вашим getTransporteMetodo (empId) в вашем сервисе. Попробуйте это getTransporteMetodo(empId): Observable<any>{ return this.http.post<any>(environment.API_URL + 'transporte/getAll', {empId}); }
Этот код возвращал некоторые ошибки при размещении в ngOnit. Будет ли это функция, которую мне придется вызывать в ngOnit?
Просто предположение, в запросе у вас есть emp.id
- должно ли это быть emp_id
как ответ?
Какое значение имеет this.storeS.layout.emp.id? Что произойдет, если он не определен? Не могли бы вы также опубликовать API?
@lafleur возвращает идентификатор компании, в которой находится человек, например, empId: 3
@James Да, empId полезной нагрузки совпадает с emp_id ответа.
Но у вас нет empId
в полезной нагрузке, у вас есть emp.id
.
@james Полезная нагрузка {"empId":4} Ответ [{"id":9,"emp_id":4,"nome":"Frota Pr\u00f3pria","tipo":"FROTA","subtipo": null,"latLng":[-25.43635,-49.31626],"vFreteMin":0,"vFreteGratis":80,"periodos":[{"id":10,"transporte_ id":9,"ativo":1,"periodo":"(Коммерческие 9h \u00e0s 19h)","corte":"17:00","data":null,"week":[] }]},{"id":10,"emp_id":4,"nome":"Retirada na loja","tipo":"RETIRA","subtipo":null,"latLng":[ -25.43394,-49.31603],"vFreteMin":0,"vFreteGratis":null,"periodos":[]}]
Попробуйте ввести это в свой файл service.ts
getTransporteMetodo(empId): Observable<any> {
return this.http.post<any>(environment.API_URL + 'transporte/getAll', { empId
});
}
Вам понадобится этот импорт в вашем сервисе
import { Observable } from 'rxjs';
После этого проверьте, отображается ли в вашей консоли по-прежнему undefined. Дайте мне знать, что это сработало для вас
по-прежнему возвращается как неопределенное, используя код this.cartS.getTransporteMetodo(this.storeS.layout.emp.id).toPromise().then(res =>{console.info(res)});
при этом он даже не возвращается бесконечно в систему this.cartS.getTransporteMetodo(this.storeS.layout.emp.id).subscribe((res) => { console.info(res); });
Можете ли вы проверить, не является ли res неопределенным? Попробуйте console.info(res) и дайте мне знать