服务可观察

时间:2017-03-24 08:25:35

标签: angular typescript

在我的Angular 2应用程序中,我试图捕获从服务中抛出的组件级别的错误。

例如。

class ServiceA
{
  getCustomer()
  {
    this.http.get('/someURL').subscribe(
      (data) => {
        return data;
      },
      (err) => {
        throw err
      }
    )
  }


class ComponentA
{
  constructor(
    private serviceA : ServiceA
  ){}

  ngOnInit()
  {
    try
    {
      let var1;
      var1 = this.serviceA.getCustomer()
    }
    catch(err)
    {
      //How do I trigger this catch to work ?
      console.log(err);
    }

  }
}

我的代码上面有什么问题?为什么不起作用?

1 个答案:

答案 0 :(得分:2)

您正在订阅服务本身而不是订阅组件。 getCustomer()也没有返回任何内容。

只返回getCustomer()的观察点。映射响应值。

getCustomer()
  {
    return this.http.get('/someURL').map(
      (data) => {
        return data.json();//if response content type is json
      },
      (err) => {
        throw err
      }
    )
  }

订阅组件。

  this.serviceA.getCustomer().subscribe(data=>{
    var1=data;
  },err=>{
   console.log(err);//get the error in error handler
  });