每次参数更改时将数据从服务传递到组件

时间:2017-10-27 13:21:13

标签: angular

我在我的详细信息组件中检测到url参数是否更改:

this.route.params
  .subscribe(
    (params: Params) => {
      console.log('route parameter changed');
      this.id = +params['id'];
      this.dataStorageDervice.getMeldunek(this.id);
    }
  );

在我的REST服务中,我有一个方法:

getMeldunek(id: number) { 
  this.http.get('http://192.168.0.154:8080/api/rezerwacja/getPrzyjazdy/rezerwacja?id=' + id)
    .map((response: Response) => {
      const meldunek: Meldunek = response.json();
      return meldunek;
    });
}

如何连接这两个并将响应传递给我的组件?

2 个答案:

答案 0 :(得分:0)

您错过了return声明:

getMeldunek(id: number) { 
  return this.http
    .get('http://192.168.0.154:8080/api/rezerwacja/getPrzyjazdy/rezerwacja?id=' + id)
    .map((response: Response) => { 
      const meldunek: Meldunek = response.json(); 
      return meldunek; 
    });    
}

答案 1 :(得分:0)

  1. 添加AddWeb Solution Pvt Ltds answer中指出的缺少的return语句:

    getMeldunek(id: number) { 
      return this.http
        .get('...' + id)
        .map((response: Response) => { 
            const meldunek: Meldunek = response.json(); 
            return meldunek; 
      });    
    }
    
  2. 尝试使用mergeMap在第二个ObservableObservable)中使用第一个this.dataStorageDervice.getMeldunek(this.route.params)的结果。然后subscribe到那个:

    export class YourComponent {
      ngOnInit() {
          this.route.params
           .mergeMap((params: Params) => {
             console.log('route parameter changed');
             this.id = +params['id'];
             return this.dataStorageDervice.getMeldunek(this.id);
          }).subscribe(meldunek => {
            // do something with your meldunek
          });
      }
    }