Advertisement
Guest User

Untitled

a guest
Jun 27th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.85 KB | None | 0 0
  1. ngOnInit() {
  2. this.assignForm = this.fb.group({
  3. courses: this.fb.array([])
  4. });
  5.  
  6. this.setCourses();
  7. }
  8.  
  9. setCourses() {
  10. const control = <FormArray>this.assignForm.controls.courses;
  11. if (this.courses) {
  12. this.courses.forEach(course => {
  13. control.push(
  14. this.fb.group({
  15. courseAssign: false,
  16. courseDueDate: "dueDate",
  17. students: this.setStudents(course)
  18. })
  19. );
  20. });
  21. }
  22. }
  23.  
  24. setStudents(course) {
  25. const studentArray = new FormArray([]);
  26. course.students.forEach(student => {
  27. studentArray.push(
  28. this.fb.group({
  29. studentAssign: false,
  30. studentDueDate: "dueDate"
  31. })
  32. );
  33. });
  34. return studentArray;
  35. }
  36.  
  37. <form [formGroup]="assignForm" (ngSubmit)="onSubmit()">
  38. <div fxLayout="row" fxLayoutAlign="end center" class="assign-btn-container">
  39. <button
  40. mat-raised-button
  41. color="primary"
  42. type="submit">
  43. Assign
  44. </button>
  45. </div>
  46.  
  47. <div formArrayName="courses">
  48. <mat-expansion-panel
  49. #expPanel
  50. *ngFor="let course of courses; let i = index"
  51. [formGroupName]="i">
  52. <mat-expansion-panel-header>
  53. <div class="panel-header-text">
  54. <div class="course-name">
  55. {{ course.courseTitle }}
  56. </div>
  57.  
  58. <div class="course-opts">
  59. <!-- Course Assign -->
  60. <div fxFlex>
  61. <mat-checkbox
  62. formControlName="courseAssign"
  63. (click)="$event.stopPropagation()"
  64. (change)="$event ? toggleAssignCourse($event, course, i) : null">
  65. Assign
  66. </mat-checkbox>
  67. </div>
  68.  
  69. <!-- Course Due Date/Time -->
  70. <div fxFlex>
  71. <input type="text"
  72. placeholder="Due Date & Time"
  73. formControlName="courseDueDate"/>
  74. </div>
  75. </div>
  76. </div>
  77. </mat-expansion-panel-header>
  78.  
  79. <div formArrayName="students">
  80. <div
  81. *ngFor="let student of course.students; let s = index"
  82. [formGroupName]="s">
  83. <div class="student-name">
  84. {{ student.firstName }} {{ student.lastName }}
  85. </div>
  86.  
  87. <mat-action-row class="assignment-opts">
  88. <!-- Student Assign -->
  89. <div fxFlex>
  90. <mat-checkbox
  91. formControlName="studentAssign"
  92. (change)="toggleAssignStudent($event, course, student, s)">
  93. Assign
  94. </mat-checkbox>
  95. </div>
  96.  
  97. <!-- Student Due Date/Time -->
  98. <div fxFlex>
  99. <input type="text"
  100. placeholder="Due Date & Time"
  101. formControlName="studentDueDate"/>
  102. </div>
  103. </mat-action-row>
  104. </div>
  105. </div>
  106. </mat-expansion-panel>
  107. </div>
  108. </form>
  109.  
  110. toggleAssignCourse(event, course: Course, i) {
  111. this.assignForm.value.courses[i].students.map(student => {
  112. student.studentAssign = true;
  113. });
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement