Advertisement
Guest User

Untitled

a guest
Jan 30th, 2018
301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.02 KB | None | 0 0
  1. import { Component, Inject } from '@angular/core';
  2. import { FormBuilder, FormGroup, FormArray, Validators } from '@angular/forms';
  3. import { debug } from 'util';
  4.  
  5. @Component({
  6. selector: 'app-root',
  7. templateUrl: './app.component.html',
  8. styleUrls: ['./app.component.css']
  9. })
  10. export class AppComponent {
  11.  
  12. public personContacts: FormGroup;
  13.  
  14. private personContactArray : Array<Person> = [];
  15.  
  16. constructor(private formBuilder: FormBuilder) {
  17. this.initPersonArray();
  18. this.personContacts = this.formBuilder.group({
  19. persons: this.formBuilder.array([])
  20. });
  21. }
  22.  
  23. ngOnInit() {
  24. this.initFormBuilderValues();
  25. }
  26.  
  27. initFormBuilderValues(){
  28. this.personContactArray.forEach(element => {
  29. this.addPerson(element);
  30. });
  31. }
  32.  
  33. initPersonArray(){
  34. let person1 = new Person(1,"Kuba Woźniak","kubawozniak27@wp.pl","784-973-317");
  35. let person2 = new Person(2,"Bartek Woźniak","dupa@wp.pl","784-212-121");
  36. let person3 = new Person(3,"Witkoria Woźniak","bla@wp.pl","784-973-317");
  37.  
  38. this.personContactArray.push(person1);
  39. this.personContactArray.push(person2);
  40. this.personContactArray.push(person3);
  41. }
  42.  
  43. initPersonContactRows(person?:Person) {
  44. person = person? person : new Person();
  45. return this.formBuilder.group({
  46. PersonContactId: [person.PersonContactId],
  47. PersonContactName: [person.PersonContactName ,[ Validators.required]],
  48. PersonContactEmail:[person.PersonContactEmail ,[ Validators.required,]],
  49. PersonContactPhoneNumber:[person.PersonContactPhoneNumber,[ Validators.required,]]
  50. });
  51. }
  52.  
  53. addPerson(person? : Person) {
  54. const control = <FormArray>this.personContacts.controls['persons'];
  55. control.push(this.initPersonContactRows(person));
  56. }
  57.  
  58. deletePerson(index: number) {
  59. const control = <FormArray>this.personContacts.controls['persons'];
  60. debugger;
  61. control.removeAt(index);
  62. }
  63. }
  64.  
  65. export class Person {
  66. PersonContactId?: number;
  67. PersonContactName: string;
  68. PersonContactEmail:string;
  69. PersonContactPhoneNumber:string;
  70.  
  71. constructor(personContactId?:number, personContactName?:string,personContactEmail?:string,personContactPhoneNumber?:string){
  72. this.PersonContactId = personContactId;
  73. this.PersonContactEmail = personContactEmail;
  74. this.PersonContactName = personContactName;
  75. this.PersonContactPhoneNumber = personContactPhoneNumber;
  76. }
  77.  
  78. }
  79.  
  80. <h3 class="page-header">Add Invoice</h3>
  81.  
  82. <div class="container">
  83. <form [formGroup]="personContacts">
  84. <div formArrayName="persons">
  85. <div *ngFor="let person of personContacts.controls.persons.controls; let i=index" [formGroupName]="i">
  86. <div> #{{ i + 1 }}</div>
  87. <div class="row">
  88. <input type="hidden" formControlName="PersonContactId" name="PersonContactId" >
  89. <input formControlName="PersonContactName" name="PersonContactName" class="form-control col-lg-2" placeholder="Imię i nazwisko" required>
  90. <input formControlName="PersonContactEmail" name="PersonContactEmail" class="form-control col-lg-2" placeholder="E-mail" required>
  91. <input formControlName="PersonContactPhoneNumber" name="PersonContactPhoneNumber" class="form-control col-lg-2" placeholder="Numer telefonu" required>
  92. <button type="button" (click)="deletePerson()" class="btn btn-primary">Delete</button><br>
  93. <button *ngIf="personContacts.controls.persons.controls.length-1 == i" type="button" (click)="addPerson()" class="btn btn-primary">Add new Row</button><br>
  94. </div>
  95. <div class="row">
  96. <div *ngIf="person.controls.PersonContactName.dirty">
  97. <div *ngIf="person.hasError('required', 'PersonContactName')">Required</div>
  98. </div>
  99. </div>
  100. </div>
  101. </div>
  102. </form>
  103. <pre>{{personContacts.value | json}}</pre>
  104. </div>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement