【问题标题】:Post Request not Sent to Server发布请求未发送到服务器
【发布时间】:2018-05-20 17:45:06
【问题描述】:

我正在尝试将数据发布到我从表单中提取的 API。

问题是它根本不会尝试发送 post 请求。 Register.component.ts:

import { Component, OnInit } from '@angular/core';
import { RegisterService } from '../register.service';
import { FormGroup, FormBuilder, FormControl, Validators, FormArray, ReactiveFormsModule } from '@angular/forms';
import { user } from '../user'
@Component({
  selector: 'app-register',
  templateUrl: './register.component.html',
  styleUrls: ['./register.component.css']
})
export class RegisterComponent implements OnInit {
  public myForm: FormGroup;
  public submitted: boolean;
  public events: any[] = [];

  constructor(private registerService: RegisterService, 
  private _fb: FormBuilder) { }

  ngOnInit() {
    this.myForm = new FormGroup({
      username: new FormControl('', [<any>Validators.required, <any>Validators.minLength(5)]),
      email: new FormControl('', [<any>Validators.required, <any>Validators.minLength(5)]),
      org_number: new FormControl('', [<any>Validators.required, <any>Validators.minLength(5)]),
      password: new FormControl('', [<any>Validators.required, <any>Validators.minLength(8)])
    });
  }

  save(model: user, isValid: boolean){
    this.submitted = true;
    this.registerService.postUser(model)
    console.log(model, isValid)
  }

以及它调用的服务:

import { Injectable } from '@angular/core';
import { user } from './user';
import { Observable, of } from 'rxjs';
import { map, catchError } from 'rxjs/operators'
import { HttpClient, HttpHeaders } from '@angular/common/http';

const HttpOptions = {
  headers: new HttpHeaders({ 'Content-type': 'application/json' })
};
const HttpOption2 = {
  headers: new HttpHeaders({ 'Content-type': 'application/x-www-form-urlencoded' })
}
@Injectable({
  providedIn: 'root'
})
export class RegisterService {

  private usersUrl= 'api/v1/accounts';

  constructor(
    private http: HttpClient,

  ) { }

  getUsers(): Observable<user[]> {
    return this.http.get<user[]>(this.usersUrl)
  }
  postUser(object): Observable<user[]>{
    console.log(object)
    console.log('Did it enter this?')
    return this.http.post<user[]>(this.usersUrl, user, HttpOptions)
  }
}

我的代码输出预期的信息:用户名:'用户名',电子邮件:'电子邮件'等

而且我知道它调用了该函数,因为它还输出:'Did it enter this?'。

我的 API 没有收到 post-request,我不知道为什么。我一直在official angular Httpclient 页面上寻找答案,以及许多堆栈溢出帖子,我尝试添加 .subscribe 但我得到错误类型订阅不可分配给类型可观察用户,如果我添加 .map( )我得到该地图在可观察用户类型上不存在,如果我添加 .pipe() 我没有收到错误消息,但仍然没有 Post-request。 而如果我添加 .pipe( catchError(this.handleError('addHero', hero)) ); 我得到类型可观察用户不可分配给可观察用户类型。有什么想法吗?

【问题讨论】:

    标签: angular forms angular-httpclient


    【解决方案1】:

    您需要订阅请求才能被调用,

      this.registerService.postUser(model).subscribe(result => this.result =result);
    

    确保声明一个名为 result 的变量来分配响应的数据,

    result : any;
    

    【讨论】:

    • 声明一个名为result的变量
    • 好的,现在我得到“RegisterComponent 类型上不存在结果”,有什么想法吗?
    • 你需要声明一个名为result的变量,或者去掉这个变量就放console.log(result)
    • 是的,修复了它,我收到 400 错误 atm:“JSON 解析错误 - 预期值:第 1 行第 1 列(字符 0)”} 如果您想尝试一下,但你确实解决了我的问题1
    • 所以现在你的api被调用了,上面的错误与你访问的结果有关。使用 console.log 检查结果。标记是否有帮助
    猜你喜欢
    • 2016-09-29
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多