代码之家  ›  专栏  ›  技术社区  ›  wsaxton

在Angular中,如何在http get返回结果对象之前操作它们?

  •  0
  • wsaxton  · 技术社区  · 8 年前

    return this.http
            .get(this.jobsUrl, options)
            .map(res => {
                console.log(job.state);  //shows original value
                res.json().jobs.map((job) => job.state = this.stateTranslation[job.state]);
                console.log(job.state);  //shows translated value
                return res.json().jobs as Job[];
            })
            .catch(this.handleError);
    

    2 回复  |  直到 8 年前
        1
  •  2
  •   Poul Kruijt    8 年前

    创建2个地图。1用于转换为 JSON ,另一个用于循环阵列。这提高了可读性。你的问题是你打电话 res.json

    return this.http
        .get(this.jobsUrl, options)
        .map(res => res.json().jobs as Job[])
        .map((job: Job) =>  {
           job.state = this.stateTranslation[job.state]);
           return job;
        }) 
        .catch(this.handleError);
    
        2
  •  0
  •   Faly    8 年前

    您应该在映射后返回结果,并在数组映射回调中更改其状态后返回作业:

    return this.http
            .get(this.jobsUrl, options)
            .map(res => {
                let ret = res.json().jobs.map((job) => { 
                    job.state = this.stateTranslation[job.state];
                    return job;
                 });
                return ret as Job[];
            })
            .catch(this.handleError);