app.module.ts 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import { BrowserModule } from '@angular/platform-browser';
  2. import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
  3. import { NgModule, APP_INITIALIZER } from '@angular/core';
  4. import { FormsModule } from '@angular/forms';
  5. import {
  6. MatButtonModule,
  7. MatTabsModule,
  8. MatTableModule,
  9. MatIconModule,
  10. MatCardModule,
  11. MatInputModule,
  12. MatToolbarModule,
  13. MatDialogModule,
  14. MatCheckboxModule,
  15. MatSelectModule,
  16. MatDatepickerModule,
  17. MatNativeDateModule
  18. } from '@angular/material';
  19. import { PsRootComponent } from './root.component';
  20. import { CreateReportComponent } from './create-report.component';
  21. import { CreateReportItemDialogComponent } from './create-report-item.component';
  22. import { ReportsComponent } from './reports.component';
  23. import { AppRoutingModule } from './app-routing.module';
  24. import { ReportDataService} from './services/reportData.service';
  25. import { ReportItemService } from './services/reportItem.service';
  26. import { WindowService } from './services/window.service';
  27. import { MessengerWatcher } from './services/messenger.service';
  28. import { EditReportComponent } from './edit-report.component';
  29. export const initApp = (messengerWatcher: MessengerWatcher) => () => {
  30. messengerWatcher.watch();
  31. }
  32. export const initMessengerWatcher = (reportDataService: ReportDataService) =>
  33. new MessengerWatcher(reportDataService);
  34. @NgModule({
  35. declarations: [
  36. PsRootComponent,
  37. ReportsComponent,
  38. CreateReportComponent,
  39. EditReportComponent,
  40. CreateReportItemDialogComponent
  41. ],
  42. imports: [
  43. BrowserModule,
  44. BrowserAnimationsModule,
  45. AppRoutingModule,
  46. FormsModule,
  47. MatButtonModule,
  48. MatTabsModule,
  49. MatTableModule,
  50. MatIconModule,
  51. MatCardModule,
  52. MatInputModule,
  53. MatToolbarModule,
  54. MatDialogModule,
  55. MatCheckboxModule,
  56. MatSelectModule,
  57. MatDatepickerModule,
  58. MatNativeDateModule
  59. ],
  60. providers: [
  61. ReportDataService,
  62. ReportItemService,
  63. {
  64. provide: MessengerWatcher,
  65. deps: [ReportDataService],
  66. useFactory: initMessengerWatcher
  67. },
  68. {
  69. provide: APP_INITIALIZER,
  70. useFactory: initApp,
  71. deps: [MessengerWatcher],
  72. multi: true
  73. },
  74. {
  75. provide: WindowService,
  76. useValue: window
  77. }
  78. ],
  79. bootstrap: [PsRootComponent, CreateReportItemDialogComponent]
  80. })
  81. export class PsExpensesModule { }