Skip to content

Commit 52315ed

Browse files
committed
Angular NgRx Course
1 parent fdc086b commit 52315ed

8 files changed

+106
-154
lines changed

src/app/courses/course-form/course-form.component.css

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/app/courses/course-form/course-form.component.html

Lines changed: 0 additions & 69 deletions
This file was deleted.

src/app/courses/course-form/course-form.component.ts

Lines changed: 0 additions & 61 deletions
This file was deleted.

src/app/courses/courses-card-list/courses-card-list.component.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ export class CoursesCardListComponent implements OnInit {
2727

2828
dialogConfig.data = {
2929
dialogTitle:"Edit Course",
30-
course
30+
course,
31+
mode: 'update'
3132
};
3233

3334
this.dialog.open(EditCourseDialogComponent, dialogConfig);

src/app/courses/courses.module.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import {MatSortModule} from '@angular/material/sort';
1717
import {MatTableModule} from '@angular/material/table';
1818
import {MatTabsModule} from '@angular/material/tabs';
1919
import {ReactiveFormsModule} from '@angular/forms';
20-
import {MatMenuModule} from '@angular/material/menu';
2120
import {MatMomentDateModule} from '@angular/material-moment-adapter';
2221
import {MatCardModule} from '@angular/material/card';
2322
import {MatButtonModule} from '@angular/material/button';
@@ -31,7 +30,6 @@ import {CourseDataService} from './services/course-data.service';
3130
import {EntityDataModule, EntityDataService, EntityDefinitionService, EntityMetadataMap} from '@ngrx/data';
3231
import {Course} from './model/course';
3332
import {CourseEntityService} from './services/course-entity.service';
34-
import {CourseFormComponent} from './course-form/course-form.component';
3533

3634

3735
export const coursesRoutes: Routes = [
@@ -95,8 +93,7 @@ const entityMetadata: EntityMetadataMap = {
9593
HomeComponent,
9694
CoursesCardListComponent,
9795
EditCourseDialogComponent,
98-
CourseComponent,
99-
CourseFormComponent
96+
CourseComponent
10097
],
10198
exports: [
10299
HomeComponent,
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,10 @@
11

2+
3+
.mat-form-field {
4+
display: block;
5+
}
6+
7+
textarea {
8+
height: 100px;
9+
resize: vertical;
10+
}
Lines changed: 63 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,69 @@
11

2+
<h2 mat-dialog-title>{{dialogTitle}}</h2>
23

3-
<course-form
4-
[course]="course"
5-
[title]="dialogTitle"
6-
(close)="close()"
7-
(courseChanged)="onCourseChanged($event)">
4+
<mat-dialog-content>
5+
6+
<ng-container *ngIf="form">
7+
8+
<ng-container [formGroup]="form">
9+
10+
<mat-form-field>
11+
12+
<input matInput
13+
placeholder="Course Description"
14+
formControlName="description">
15+
16+
</mat-form-field>
17+
18+
<mat-form-field>
19+
20+
<mat-select placeholder="Select category"
21+
formControlName="category">
22+
23+
<mat-option value="BEGINNER">
24+
Beginner</mat-option>
25+
<mat-option value="INTERMEDIATE">
26+
Intermediate</mat-option>
27+
<mat-option value="ADVANCED">
28+
Advanced</mat-option>
29+
30+
</mat-select>
31+
32+
</mat-form-field>
33+
34+
<mat-slide-toggle formControlName="promo">Promotion On</mat-slide-toggle>
35+
36+
37+
<mat-form-field>
38+
39+
<textarea matInput placeholder="Description"
40+
formControlName="longDescription">
41+
42+
</textarea>
43+
44+
</mat-form-field>
45+
46+
</ng-container>
47+
48+
49+
</ng-container>
50+
51+
</mat-dialog-content>
52+
53+
<mat-dialog-actions>
54+
55+
<button mat-raised-button (click)="onClose()">
56+
Close
57+
</button>
58+
59+
<button mat-raised-button color="primary"
60+
[disabled]="!form?.valid"
61+
(click)="onSave()">
62+
Save
63+
</button>
64+
65+
</mat-dialog-actions>
866

9-
</course-form>
1067

1168

1269

src/app/courses/edit-course-dialog/edit-course-dialog.component.ts

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {Course} from '../model/course';
44
import {AppState} from '../../reducers';
55
import {Store} from '@ngrx/store';
66
import {CourseEntityService} from '../services/course-entity.service';
7+
import {FormBuilder, FormGroup, Validators} from '@angular/forms';
78

89
@Component({
910
selector: 'course-dialog',
@@ -12,30 +13,56 @@ import {CourseEntityService} from '../services/course-entity.service';
1213
})
1314
export class EditCourseDialogComponent {
1415

16+
form: FormGroup;
17+
1518
dialogTitle: string;
1619

1720
course: Course;
1821

22+
mode: 'create' | 'update';
23+
1924
constructor(
25+
private fb: FormBuilder,
2026
private store: Store<AppState>,
2127
private dialogRef: MatDialogRef<EditCourseDialogComponent>,
2228
@Inject(MAT_DIALOG_DATA) data,
2329
private coursesService: CourseEntityService) {
2430

2531
this.dialogTitle = data.dialogTitle;
2632
this.course = data.course;
33+
this.mode = data.mode;
34+
35+
this.form = this.fb.group({
36+
description: [this.course.description, Validators.required],
37+
category: [this.course.category, Validators.required],
38+
longDescription: [this.course.longDescription, Validators.required],
39+
promo: [this.course.promo, []]
40+
});
2741

2842
}
2943

30-
close() {
44+
onClose() {
3145
this.dialogRef.close();
3246
}
3347

34-
onCourseChanged(course: Course) {
48+
onSave() {
3549

36-
this.coursesService.update(course);
50+
const course = {
51+
...this.course,
52+
...this.form.value
53+
};
54+
55+
if (this.mode == 'update') {
56+
57+
this.coursesService.update(course);
58+
59+
this.dialogRef.close();
60+
61+
}
62+
else if (this.mode == 'create') {
63+
64+
}
3765

38-
this.dialogRef.close();
3966
}
4067

4168
}

0 commit comments

Comments
 (0)