131 lines
3.7 KiB
TypeScript
131 lines
3.7 KiB
TypeScript
|
import { NgModule, ApplicationRef } from '@angular/core';
|
||
|
import { BrowserModule } from '@angular/platform-browser';
|
||
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||
|
import { HttpModule, RequestOptions, XHRBackend } from '@angular/http';
|
||
|
import { RouterModule } from '@angular/router';
|
||
|
import { removeNgStyles, createNewHosts } from '@angularclass/hmr';
|
||
|
|
||
|
import { FileSelectDirective } from 'ng2-file-upload/ng2-file-upload';
|
||
|
import { ProgressbarModule } from 'ng2-bootstrap/components/progressbar';
|
||
|
import { PaginationModule } from 'ng2-bootstrap/components/pagination';
|
||
|
import { BytesPipe } from 'angular-pipes/src/math/bytes.pipe';
|
||
|
|
||
|
/*
|
||
|
* Platform and Environment providers/directives/pipes
|
||
|
*/
|
||
|
import { ENV_PROVIDERS } from './environment';
|
||
|
import { routes } from './app.routes';
|
||
|
// App is our top level component
|
||
|
import { AppComponent } from './app.component';
|
||
|
import { AppState } from './app.service';
|
||
|
import { AccountComponent, AccountService } from './account';
|
||
|
import { LoginComponent } from './login';
|
||
|
import {
|
||
|
LoaderComponent,
|
||
|
VideosComponent,
|
||
|
VideoAddComponent,
|
||
|
VideoListComponent,
|
||
|
VideoMiniatureComponent,
|
||
|
VideoSortComponent,
|
||
|
VideoWatchComponent,
|
||
|
VideoService
|
||
|
} from './videos';
|
||
|
import {
|
||
|
FriendsComponent,
|
||
|
FriendAddComponent,
|
||
|
FriendListComponent,
|
||
|
FriendService,
|
||
|
UsersComponent,
|
||
|
UserAddComponent,
|
||
|
UserListComponent,
|
||
|
UserService,
|
||
|
AdminComponent,
|
||
|
MenuAdminComponent
|
||
|
} from './admin';
|
||
|
import { MenuComponent } from './menu.component';
|
||
|
import { AuthService, AuthHttp, RestExtractor, RestService, SearchComponent, SearchService } from './shared';
|
||
|
|
||
|
// Application wide providers
|
||
|
const APP_PROVIDERS = [
|
||
|
AppState,
|
||
|
|
||
|
{
|
||
|
provide: AuthHttp,
|
||
|
useFactory: (backend: XHRBackend, defaultOptions: RequestOptions, authService: AuthService) => {
|
||
|
return new AuthHttp(backend, defaultOptions, authService);
|
||
|
},
|
||
|
deps: [ XHRBackend, RequestOptions, AuthService ]
|
||
|
},
|
||
|
|
||
|
AuthService,
|
||
|
RestExtractor,
|
||
|
RestExtractor, RestService, VideoService, SearchService, FriendService, UserService, AccountService
|
||
|
];
|
||
|
/**
|
||
|
* `AppModule` is the main entry point into Angular2's bootstraping process
|
||
|
*/
|
||
|
@NgModule({
|
||
|
bootstrap: [ AppComponent ],
|
||
|
declarations: [
|
||
|
AppComponent,
|
||
|
BytesPipe,
|
||
|
FileSelectDirective,
|
||
|
AccountComponent,
|
||
|
LoginComponent,
|
||
|
LoaderComponent,
|
||
|
VideosComponent,
|
||
|
VideoAddComponent,
|
||
|
VideoListComponent,
|
||
|
VideoSortComponent,
|
||
|
VideoMiniatureComponent,
|
||
|
VideoWatchComponent,
|
||
|
FriendsComponent,
|
||
|
FriendAddComponent,
|
||
|
FriendListComponent,
|
||
|
UsersComponent,
|
||
|
UserAddComponent,
|
||
|
UserListComponent,
|
||
|
AdminComponent,
|
||
|
MenuAdminComponent,
|
||
|
MenuComponent,
|
||
|
SearchComponent
|
||
|
],
|
||
|
imports: [ // import Angular's modules
|
||
|
BrowserModule,
|
||
|
FormsModule,
|
||
|
ReactiveFormsModule,
|
||
|
HttpModule,
|
||
|
RouterModule.forRoot(routes),
|
||
|
ProgressbarModule,
|
||
|
PaginationModule
|
||
|
],
|
||
|
providers: [ // expose our Services and Providers into Angular's dependency injection
|
||
|
ENV_PROVIDERS,
|
||
|
APP_PROVIDERS
|
||
|
]
|
||
|
})
|
||
|
export class AppModule {
|
||
|
constructor(public appRef: ApplicationRef, public appState: AppState) {}
|
||
|
hmrOnInit(store) {
|
||
|
if (!store || !store.state) return;
|
||
|
console.log('HMR store', store);
|
||
|
this.appState._state = store.state;
|
||
|
this.appRef.tick();
|
||
|
delete store.state;
|
||
|
}
|
||
|
hmrOnDestroy(store) {
|
||
|
const cmpLocation = this.appRef.components.map(cmp => cmp.location.nativeElement);
|
||
|
// recreate elements
|
||
|
const state = this.appState._state;
|
||
|
store.state = state;
|
||
|
store.disposeOldHosts = createNewHosts(cmpLocation);
|
||
|
// remove styles
|
||
|
removeNgStyles();
|
||
|
}
|
||
|
hmrAfterDestroy(store) {
|
||
|
// display new elements
|
||
|
store.disposeOldHosts();
|
||
|
delete store.disposeOldHosts;
|
||
|
}
|
||
|
}
|