Неверно передаются параметры запроса Angular post

#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})
}