我已经遇到了Angular 2和ngrx / store的特定代码状态,其中我的应用程序完全断开(路由不工作,数据没有出现,路由回唱到前一个,以及所有其他可能的灾难),但我已经不多了想法如何调试商店周围发生的事情. redux dev-tools是一个很棒的工具,但它似乎无法捕获错误.
我已经在我的选择器,效果和.subscribe()语句之前放置了.catch语句,尝试了两种变体:
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);
});
任何人都可以指出我如何调试整个商店使用的observable?
最佳答案 使用.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;
});