import { NgModule } from '@angular/core'; import { FormBuilder } from '@angular/forms'; import { Http, HttpModule } from '@angular/http'; import { BrowserModule } from '@angular/platform-browser'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; import { TranslateHttpLoader } from '@ngx-translate/http-loader';

import { StoreModule } from '@ngrx/store';

// AoT requires an exported function for factories export function HttpLoaderFactory(http: Http) {

return new TranslateHttpLoader(http, '/assets/i18n/', '.json');

}

import { JsonApiModule } from 'ng-jsonapi';

import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { AuthGuard } from './services/guard/auth-guard'; import { AdminGuard } from './services/guard/admin-guard'; import { IngesterApiService } from './services/ingester-api/ingester-api.service'; import { AuthorizationService } from './services/authorization/authorization.service'; import { StoreDevtoolsModule } from '@ngrx/store-devtools';

import { EffectsModule } from '@ngrx/effects';

import { UserEffects } from './services/datastore/users/effects'; import { DataTableModule, SharedModule } from 'primeng/primeng'; import { OrganizationEffects } from './services/datastore/organizations/effects'; import { appReducer } from './services/datastore/app/reducer'; import { RouterStoreModule } from “@ngrx/router-store”;

@NgModule({

declarations: [
  AppComponent
],
imports: [
  BrowserModule,
  BrowserAnimationsModule,
  HttpModule,
  AppRoutingModule,
  StoreModule.provideStore(appReducer),
  RouterStoreModule.connectRouter(),
  StoreDevtoolsModule.instrumentOnlyWithExtension(),
  EffectsModule.run(UserEffects),
  EffectsModule.run(OrganizationEffects),
  TranslateModule.forRoot({
    loader: {
      provide: TranslateLoader,
      useFactory: HttpLoaderFactory,
      deps: [Http]
    }
  }),
  JsonApiModule,
  DataTableModule,
  SharedModule
],
providers: [
  FormBuilder,
  IngesterApiService,
  AuthorizationService,
  AuthGuard,
  AdminGuard
],
bootstrap: [AppComponent]

}) export class AppModule { }