Skip to content

Instantly share code, notes, and snippets.

@jrmcdona
Created February 16, 2017 18:34
Show Gist options
  • Save jrmcdona/28e3dee160cd848070f8530c30fcd9d1 to your computer and use it in GitHub Desktop.
Save jrmcdona/28e3dee160cd848070f8530c30fcd9d1 to your computer and use it in GitHub Desktop.
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import { UniversalModule } from 'angular2-universal';
import { FormsModule } from '@angular/forms';
import { HttpModule, Http, BaseRequestOptions, Response, ResponseOptions, RequestMethod, XHRBackend, RequestOptions } from '@angular/http';
import { MockBackend, MockConnection } from '@angular/http/testing';
import { Store, StoreModule, combineReducers } from '@ngrx/store';
import { RouterStoreModule } from '@ngrx/router-store';
import { EffectsModule } from '@ngrx/effects';
import { StoreDevtoolsModule } from '@ngrx/store-devtools';
import { compose } from '@ngrx/core/compose';
import { AmbassadorEffects } from './effects/ambassador.effects';
import { AdminUserEffects } from './effects';
import { routes } from './routes';
import { reducer } from './reducers';
//Components and Services
import { AppComponent } from './components/app/app.component'
import { NavMenuComponent } from './components/navmenu/navmenu.component';
import { AmbassadorService } from './services';
//import { AdminUserService } from './services';
import { AuthService } from './services';
import { AmbassadorActions } from './actions';
import { AdminUserActions } from './actions';
import { HomeComponent } from './components/home/home.component';
import { FetchDataComponent } from './components/fetchdata/fetchdata.component';
import { CounterComponent } from './components/counter/counter.component';
import { ProfileComponent } from './components/profile/profile.component';
import { LoginComponent } from './components/auth/login.component';
import { LoginGuard } from './guards/login.guard';
import { mockBackendProvider } from './mock-backend/mockBackendProvider';
import { ActivityListComponent } from './components/activity/activityList.component';
import { ActivityEditorComponent } from './components/activity/activityEditor.component';
import { RewardEditorComponent } from './components/reward/rewardEditor.component';
import { SweepstakesEditorComponent } from './components/sweepstakes/sweepstakesEditor.component';
import { MissionEditorComponent } from './components/mission/missionEditor.component';
import { localStorageSync } from 'ngrx-store-localstorage';
@NgModule({
bootstrap: [AppComponent],
declarations: [
AppComponent,
NavMenuComponent,
HomeComponent,
FetchDataComponent,
CounterComponent,
ProfileComponent,
LoginComponent,
ActivityListComponent,
ActivityEditorComponent,
RewardEditorComponent,
SweepstakesEditorComponent,
MissionEditorComponent
],
providers: [
AmbassadorActions,
AdminUserActions,
AmbassadorService,
AuthService,
LoginGuard,
// providers used to create fake backend
mockBackendProvider,
BaseRequestOptions,
MockBackend,
//BaseRequestOptions,
//{
// provide: Http,
// deps: [MockBackend, BaseRequestOptions, XHRBackend],
// useFactory: (backend: MockBackend, options: BaseRequestOptions, realBackend: XHRBackend) => { return new Http(backend, options); }
//}
],
imports: [
UniversalModule, // Must be first import. This automatically imports BrowserModule, HttpModule, and JsonpModule too.
FormsModule,
HttpModule,
RouterModule.forRoot(routes, { useHash: false }),
/**
* StoreModule.provideStore is imported once in the root module, accepting a reducer
* function or object map of reducer functions. If passed an object of
* reducers, combineReducers will be run creating your application
* meta-reducer. This returns all providers for an @ngrx/store
* based application.
*/
StoreModule.provideStore(
compose(
localStorageSync(['reducer'], true),
combineReducers
)({ reducer })
),
/**
* @ngrx/router-store keeps router state up-to-date in the store and uses
* the store as the single source of truth for the router's state.
*/
RouterStoreModule.connectRouter(),
/**
* Store devtools instrument the store retaining past versions of state
* and recalculating new states. This enables powerful time-travel
* debugging.
*
* To use the debugger, install the Redux Devtools extension for either
* Chrome or Firefox
*
* See: https://github.com/zalmoxisus/redux-devtools-extension
*/
StoreDevtoolsModule.instrumentOnlyWithExtension(),
/**
* EffectsModule.run() sets up the effects class to be initialized
* immediately when the application starts.
*
* See: https://github.com/ngrx/effects/blob/master/docs/api.md#run
*/
EffectsModule.run(AmbassadorEffects),
EffectsModule.run(AdminUserEffects)
]
})
export class AppModule {
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment