#angular #angular-reactive-forms
#угловой #угловые реактивные формы
Вопрос:
У меня есть 8 простых полей ввода в моей форме. Я хочу отправить данные в серверную часть через API, используя метод POST.
У меня есть пара файлов ts.
- Register.ts
export class User { public EmployeeName: string; public EmployeeID: string; public Department: string; public Location: string; public PhoneNumber: string; public Email: string; }
- Регистрация.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); }) }
- Регистр.компонент.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’ отсутствует в запрошенном ресурсе.