通过http响应Angular2迭代

时间:2016-02-19 09:55:14

标签: javascript angular observable

因此,我对Angular2非常陌生,并试图通过http响应进行迭代。使用以下代码:

  ngOnInit() {
    this._meetService.getAuth( "meets/"+ this.meetId + "/participants").subscribe(
      meet => {
        this.participants = meet.participants;
        this.organizators = meet.organizators;
        console.log(this.participants);
      },
      error => console.log("error")
    )
  }

我在this.participantsthis.organizators中都获得了值,但使用了以下内容:

  ngOnInit() {
    this._meetService.getAuth("meets/"+ this.meetId + "/participants").subscribe(
      meet => {
        meet.participants.forEach(participant => this.members.push(participant));
        meet.organizators.forEach(organizator => this.members.push(organizator));
        console.log(this.members);
      },
      error => console.log("error")
    )
  }

我收到错误记录。怎么会这样?

这里是getAuth()方法:

@Injectable()
export class MeetService {
  constructor(private http: Http, public api: ApiConfig, private _routeParams: RouteParams) {}

  getAuth(path: string) {
    var auth = this.api.headers();
    auth.append("X-Auth-Key", "azertyuiop...");
    return this.http.get(this.api.getPath(path), {headers: auth})
      .map(res => <any> res.json())
  }

}

1 个答案:

答案 0 :(得分:2)

我认为你正在推动this.members undefined。尝试先将其初始化

ngOnInit() {
    this._meetService.getAuth("meets/"+ this.meetId + "/participants").subscribe(
      meet => {
        this.members = [];
        meet.participants.forEach(participant => this.members.push(participant));
        meet.organizators.forEach(organizator => this.members.push(organizator));
        console.log(this.members);
      },
      error => console.log("error")
    )
  }

设置members: Array<any>只是告诉TypeScript有一个member属性应该是Array类型,但它不会为你创建属性。