我如何调试ngrx / store?

时间:2016-11-24 13:52:15

标签: angular ngrx

我遇到了Angular 2和ngrx / store的特定代码状态,其中我的应用程序完全断开(路由不工作,数据没有出现,路由回到上一个,以及所有其他可能的灾难),但是我我已经没想到如何调试商店周围发生的事情了。 redux dev-tools是一个很棒的工具,但它似乎无法捕获错误。

我已经在我的选择器,效果和.catch语句之前放置了.subscribe()语句,尝试了两种变体:

return state$.select(state => state.user)
  .map(user => user.collection)
  .catch((error, caught) => {
      console.log('error getCollection');
      return caught;
  });

return state$.select(state => state.user)
  .map(user => user.collection)
  .catch((error) => {
      console.log('error getCollection');
      return Observable.throw(error);
  });

控制台仍保持沉默。我根本不相信会有任何其他错误的单一来源"但商店。

此代码不会为我捕获错误。应该吗?:

.do(() => {
    Observable.throw('fake error');
})
.catch(error => {
    console.error(error);
    return Observable.throw(error);
});

有人能指出我如何调试整个商店中使用的可观察量吗?

1 个答案:

答案 0 :(得分:2)

使用.do()记录流 - 将修复它

您需要通过RXJS导入添加do运算符。

return state$
  .do(() => { // log here } )
  .select(state => state.user)
  .map(user => user.collection)
  .catch((error, caught) => {
      console.log('error getCollection');
      return caught;
  });