#angular
#angular
Вопрос:
Я пытаюсь выполнить запрос post в Angular. Мне нужно передать модель в качестве параметра, однако я получаю сообщение об ошибке.
Вот мой код
Модель
protected initModel() {
this.model = {
basics: null,
retirements: null,
risk: null,
users: null
};
}
Функция для присвоения значений модели
saveTemp( args: { tabName: string, tabModel: any } ) {
switch (args.tabName) {
case 'basics': {
this.model.basics = args.tabModel;
// console.log(this.model.basics);
break;
}
case 'retirement': {
this.model.retirements = args.tabModel;
break;
}
case 'risk': {
this.model.risk = args.tabModel;
break;
}
case 'users': {
this.model.users = args.tabModel;
break;
}
default: {
break;
}
}
}
Запрос Post
const token = localStorage.getItem('token');
const headers = new HttpHeaders()
.set('Authorization', `Bearer ${token}`)
.set('Content-Type', 'application/json');
const options = { headers: headers };
this.http.post('https://localhost:44345/api/Corporates/Create', this.saveTemp( args: { basic, this.model.basics } ), options)
.subscribe(data => {
console.log(data);
})
Ошибка заключается в том, что я передаю функцию saveTemp с параметром post-запроса «Ожидалось 1 аргумент, но получено 2».
Комментарии:
1. Не могли бы вы опубликовать полное сообщение об ошибке?
2. Это из моего текстового редактора. Способ, которым я передаю данные в запрос post, неверен.
Module parse failed: Unexpected token (215:114) You may need an appropriate loader to handle this file type. | .set('Content-Type', 'application/json'); | var options = { headers: headers }; > this.http.post('https://localhost:44345/api/Corporates/Create', this.saveTemp(args, { basic: basic, this: .model.basics }), options) | .subscribe(function (data) { | console.log(data);
3. Сигнатура метода Angular post
post(url: string, body: any | null ...)
не вызывает встроенный методsaveTemp
. Хотя тип являетсяany
, он ожидает любой из поддерживаемых типов JSON.
Ответ №1:
Эта строка недопустима. this.saveTemp
вызывается некорректно и не возвращает никакого значения.
this.http.post(URL, this.saveTemp( args: { basic, this.model.basics } ), options)
Попробуйте вызвать saveTemp
перед выполнением запроса и передать только model:
this.http.post(URL, this.model, options)
Комментарии:
1. Спасибо, я вижу свою ошибку
Ответ №2:
другой подход для отправки модели
apiUrl:string="";
getLoggedInUser(model:any): Observable<any> {
const headers = new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': 'Bearer token'
})
return this.http.post<any>(this.apiUrl,model,{headers:headers})
}