错误的httpClient刷新Angular中的URL

时间:2018-10-05 18:45:20

标签: angular angular-httpclient angular-errorhandler

我正在尝试使用httpClient中的Angular进行API调用。这是我进行api调用的代码。

这是我在httpPost中的authService方法:

this.authService.httpPost("/api/Users/requestNew", payload).subscribe(
  (data) => {
    console.log(data);
    this.inputForm.reset();
  },
  (error) => {
    let errorMessage = "Ooooops. An error occured. Please refresh and try again.";

  }
);

auth.service.ts

constructor(
  private http: HttpClient, 
  private dataService: DataService
) {}

httpPost(url, payload) {
  return this.http.post(
    this.url_base + ":" + this.port + url,
    payload, {
      headers: new HttpHeaders({
        "Content-Type": "application/json",
        Authorization: localStorage.getItem("id_token")
      })
    }
  );
}

现在,在有效负载中,我故意丢失了一个字段,结果服务器抛出了错误。这是我从服务器收到的错误:

http://192.168.0.15:3000/api/Users/requestNew 450 (unknown)

来自服务器的响应:

{"error":{"statusCode":"450","message":"Duration is not set.","code":"MISSING_FIELD"}}

现在我面临的问题是我的页面会自动刷新。这是我的原始网址:http://localhost:4200/user/new,在api调用后,页面将使用新的网址http://localhost:4200/user/new?进行刷新。正在添加一个额外的问号,但我不确定为什么页面会刷新。不应该刷新它,因为我在逻辑中没有写过。

修改

我有一个formGroup

inputForm: FormGroup;
durationsControl: FormControl = new FormControl(null, [
  Validators.required
]);

ngOnInit(){
    this.inputForm = new FormGroup({
      duration: this.durationsControl,
      //more controls
    });
}

在更改下拉菜单时,我正在删除此控件:

valueCHanged(e) {
  const type = e.value;
  if (type === "One") {
    this.durationDiv.nativeElement.style.display = "none";
    this.inputForm.removeControl("duration");

  } else {
    this.durationDiv.nativeElement.style.display = "block";
    this.inputForm.addControl("duration", this.durationsControl);
  }
}

如果我不删除持续时间控件(this.inputForm.removeControl("duration");),则它可以正常工作。此更改如何导致页面刷新?

编辑1 我从duration中删除了ngOnInit()控件:

ngOnInit(){
        this.inputForm = new FormGroup({
          // duration: this.durationsControl, ---> removed this
          //more controls
        });
    }

现在它可以正常工作,并且页面没有刷新。但是我仍然无法弄清楚原因。

0 个答案:

没有答案