Передача данных угловой реактивной формы методом POST в API

#angular #angular-reactive-forms

#угловой #угловые реактивные формы

Вопрос:

У меня есть 8 простых полей ввода в моей форме. Я хочу отправить данные в серверную часть через API, используя метод POST.

У меня есть пара файлов ts.

  1. Register.ts
     export class User {
         public EmployeeName: string;
         public EmployeeID: string;
         public Department: string;
         public Location: string;
         public PhoneNumber: string;
         public Email: string;
    }
     
  2. Регистрация.Service.ts
     postUser() {             
        return this.http.post(`${this.apiUrl}/userdata`,  Register,this.httpOptions).toPromise().then((data: any) => {
          console.log(data);
          this.json = JSON.stringify(data.json);
        })
    }
     
  3. Регистр.компонент.ts
     return this.httpService.postUser().then(data => {
         console.log(data);
    });
     

Я не получаю никаких ошибок, и при этом ничего не происходит. Пожалуйста, поправьте меня.

HTML-код

 <form  #userForm (ngSubmit)="Submit()" >
    <mat-form-field appearance="outline">
                   <mat-label>Employee Name</mat-label>
                   <input matInput placeholder="Employee Name" required>
                </mat-form-field>
 

Комментарии:

1. Вы не возвращаетесь в свой then. Кроме того, зачем вообще использовать promises? И почему вы устанавливаете this.json в своем сервисе? (И зачем его структурировать?)

2. Вы говорите, что используете реактивные формы, но в вашем сообщении нет кода, показывающего, что это действительно так. Включите весь код, необходимый для воспроизведения проблемы.

Ответ №1:

Если вы используете Chrome, вы можете проверить вкладку сеть в инструментах разработчика, чтобы увидеть ответ на запрос post (https://developers.google.com/web/tools/chrome-devtools/network/reference ) или же вы можете попытаться поместить catch, чтобы увидеть, возвращается ли исключение.

 return this.httpService.postUser()
.then(data => {console.log(data);})
.catch(err=>console.log(err));
 

Комментарии:

1. Я попробовал это и получил следующую ошибку. HttpErrorResponse {заголовки: HttpHeaders, статус: 400, statusText: «Неверный запрос», URL: » localhost:4200/api /myapi «, ok: false

2. есть ли у вас серверный сервер, работающий на localhost: 4200? скорее всего, это будет на другом порту

3. Он находится на другом порту, а не на 4200. Но я вижу, что это не проблема для методов Get. Это происходит только для POST

4. это очень странно .. я думаю, вам следует добавить свой хост и порт, пока вызов post возвращает this.http.post ( http://host:port /${this.apiUrl}/userdata ,

5. Доступ к XMLHttpRequest по адресу ‘ 10.1.1.1:81/api/myapi ‘ из источника ‘ localhost:4200 ‘ заблокирован политикой CORS: ответ на предполетный запрос не проходит проверку контроля доступа: заголовок ‘Access-Control-Allow-Origin’ отсутствует в запрошенном ресурсе.