Angular project using NgRx pattern to manage state of a system

company-update.component.ts 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { CompanyType } from './../../../../shared/models/company/company.type';
  2. import { MsgState } from './../../../../ngrx/msg.state';
  3. import {
  4. CreateFormToUpdateCompanyAction,
  5. UpdateCompanyWithFormDataAction,
  6. } from './../../../../ngrx/companies/companies.actions';
  7. import { CompaniesServices } from './../../../../shared/services/companies.service';
  8. import { FormGroup, FormBuilder, Validators } from '@angular/forms';
  9. import { CompanyState } from './../../../../ngrx/companies/company.state';
  10. import { ActivatedRoute, Router } from '@angular/router';
  11. import { Component, OnInit } from '@angular/core';
  12. import { Store } from '@ngrx/store';
  13. import { Company } from 'src/app/shared/models/company/company.model';
  14. @Component({
  15. selector: 'app-company-update',
  16. templateUrl: './company-update.component.html',
  17. styleUrls: ['./company-update.component.css'],
  18. })
  19. export class CompanyUpdateComponent implements OnInit {
  20. companyId: number;
  21. companyFormGroup!: FormGroup;
  22. companyState!: CompanyState;
  23. msgState = MsgState;
  24. companyTypes = CompanyType;
  25. constructor(
  26. activatedRoute: ActivatedRoute,
  27. private store: Store<{ companyReducerKey: CompanyState }>,
  28. private formBuilder: FormBuilder,
  29. private companiesService: CompaniesServices,
  30. private router: Router
  31. ) {
  32. this.companyId = activatedRoute.snapshot.params['companyId'];
  33. }
  34. ngOnInit(): void {
  35. this.companiesService
  36. .getCompanyById(this.companyId)
  37. .subscribe((company: Company) => {
  38. this.store.dispatch(new CreateFormToUpdateCompanyAction(company));
  39. this.store.subscribe((state) => {
  40. this.companyState = state.companyReducerKey;
  41. this.companyFormGroup = this.formBuilder.group({
  42. id: [this.companyState.currentCompany?.id, Validators.required],
  43. companyName: [
  44. this.companyState.currentCompany?.companyName,
  45. [Validators.required, Validators.minLength(5)],
  46. ],
  47. companyType: [
  48. this.companyState.currentCompany?.companyType,
  49. Validators.required,
  50. ],
  51. creationDate: [
  52. this.companyState.currentCompany?.creationDate,
  53. Validators.required,
  54. ],
  55. });
  56. });
  57. });
  58. }
  59. onCompanyUpdate() {
  60. let company: Company = this.companyFormGroup.value;
  61. if (window.confirm(this.msgState.CONFIRM_UPDATE)) {
  62. this.store.dispatch(new UpdateCompanyWithFormDataAction(company));
  63. }
  64. }
  65. onUpdateOk() {
  66. this.router.navigate(['/companies-management']);
  67. }
  68. }

Powered by TurnKey Linux.