我已经在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);
});

谁能指出我要如何调试整个商店中使用的可观察物?

最佳答案

使用.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;
  });

09-12 00:33