Angular,HttpClient转换将响应返回到数字

时间:2019-04-16 14:34:12

标签: angular get angular7

我有一个有效的api方法,并返回一个int类型。我正在尝试将get响应转换为角度数: enter image description here

这就是我现在正在做的事情:
要求api:

  GetNumberOfPages(topValue: number, companyNamePattern: string) {
    return this.http.get<number>(apiUrl + '/getNumberOfPages?topValue=' + topValue +
      '&companyNamePattern=' + companyNamePattern, httpOptions)
      .pipe(
        tap(v => console.log('GetNumberOfPages complete')),
        catchError(this.handleError('GetNumberOfPages', []))
      );
  }

组件中的用途:

  getNumberOfPages(topValue, companyNamePattern) {
    var numberOfPagesAny: any;
    this.api.GetNumberOfPages(topValue, companyNamePattern).subscribe(n => numberOfPagesAny = n);
    this.numberOfPages = parseInt(numberOfPagesAny, 10);

    console.log(this.numberOfPages + " number")
    console.log(numberOfPagesAny + " any")

  }

但是无论我怎样尝试,我都无法获得价值: enter image description here
那么如何将获取响应转换为数字呢?

1 个答案:

答案 0 :(得分:0)

使用Observable时,您将进行异步调用。 仅当您获得答案时,才会调用“订阅”。

这意味着在您输入订阅之前,已对console.log()进行了处理!

因此,您确实可以获得页数,如果要检查它,则应在订阅中添加console.log:

this.api.GetNumberOfPages(topValue, companyNamePattern).subscribe(n => { numberOfPagesAny = n, console.log("Number of page"+numberOfPagesAny);});

请参阅:https://angular.io/guide/observables#observables

您需要将进程放入订阅中,或使用回调函数。