app.module.ts 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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) => new MessengerWatcher(reportDataService);
  33. @NgModule({
  34. declarations: [
  35. PsRootComponent,
  36. ReportsComponent,
  37. CreateReportComponent,
  38. EditReportComponent,
  39. CreateReportItemDialogComponent
  40. ],
  41. imports: [
  42. BrowserModule,
  43. BrowserAnimationsModule,
  44. AppRoutingModule,
  45. FormsModule,
  46. MatButtonModule,
  47. MatTabsModule,
  48. MatTableModule,
  49. MatIconModule,
  50. MatCardModule,
  51. MatInputModule,
  52. MatToolbarModule,
  53. MatDialogModule,
  54. MatCheckboxModule,
  55. MatSelectModule,
  56. MatDatepickerModule,
  57. MatNativeDateModule
  58. ],
  59. providers: [
  60. ReportDataService,
  61. ReportItemService,
  62. {
  63. provide: MessengerWatcher,
  64. deps: [ReportDataService],
  65. useFactory: initMessengerWatcher
  66. },
  67. {
  68. provide: APP_INITIALIZER,
  69. useFactory: initApp,
  70. deps: [MessengerWatcher],
  71. multi: true
  72. },
  73. {
  74. provide: WindowService,
  75. useValue: window
  76. }
  77. ],
  78. bootstrap: [PsRootComponent, CreateReportItemDialogComponent]
  79. })
  80. export class PsExpensesModule { }