你怎么会发现这个错误

时间:2017-05-19 04:17:21

标签: angular error-handling catch-block

在这种情况下你会如何发现错误:

   getStuff(): Observable<Stuff[]> {

    return this.http.get(url)
      .map((res: Response) => {
        return res.json()
        .map(item => {
          return {
            id: item.id
            name: item.code
          };
      });
    });

  }

我试图放.catch()但是说返回类型与Supplied parameters do not match any signature of call target.

不匹配
getStuff(): Observable<Stuff[]> {

    return this.http.get(url)
      .map((res: Response) => {
        return res.json()
        .map(item => {
          return {
            id: item.id
            name: item.code
          };
      });
    })
    .catch();

  }

.catch((err) => console.error(err));获得 Argument of type '(err: any) => void' is not assignable to parameter of type '(err: any, caught: Observable<any>) => ObservableInput<{}>'. Type 'void' is not assignable to type 'ObservableInput<{}>'.

1 个答案:

答案 0 :(得分:1)

您可以使用Observable.throw

function handleError(error: any) {

  let errorMsg = error.message || `Yikes! There was was a problem `;
  console.error(errorMsg);

  // throw an application level error
  return Observable.throw(errorMsg);
}

并使用

 .catch(handleError);