Могу говорить только за себя - $resource и Restangular только усложняют управление состоянием в большом приложении. Перешел на Redux для управления состоянием. Есть сервис Transport с настройками, который реализует базовые операции, используется в Redux actions.
Примерно вот так:
@Injectable()
class Transport {
constructor(private _http: Http, private _config: TransportConfig) {
}
// Тут get, post, put, delete с использованием _config (apiEndpoint и.т.д)
}
class SessionActions {
constructor(private _s: Store, private _t: Transport) {
}
loadSession() {
this._s.dispatch(actionLoad());
this._t.get('/session')
.then(actionLoadCompleted)
.catch(actionLoadError);
}
}
@NgModule({
id: 'store',
providers: [
Store,
{
provide: SessionActions,
useFactory: (store, transport) => new SessionActions(store, transport),
deps: [Store, Transport]
}
]
})
Ну и в любом компоненте
constructor(private _s: Store, private _actions: SessionActions) {
_s.subscribe('session.user', (user) => {
this.user = user;
});
_actions.loadSession();
}
Большой плюс в том, что код управления состоянием может быть переиспользован с любым JS-фреймворком, он не привязан к Angular2