Skip to content

Commit 0c2e4ad

Browse files
author
Your Name
committed
Reactive Angular Course
1 parent 0c6c46d commit 0c2e4ad

File tree

4 files changed

+38
-11
lines changed

4 files changed

+38
-11
lines changed

server/get-courses.route.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,21 @@ import {COURSES} from "./db-data";
77

88
export function getAllCourses(req: Request, res: Response) {
99

10-
/*
10+
1111
console.log("ERROR loading courses!");
12-
res.status(500).json({message: 'random error occurred.'});
12+
res.status(500).json({message: 'error occurred.'});
1313
return;
14-
*/
1514

15+
16+
17+
/*
1618
setTimeout(() => {
1719
1820
res.status(200).json({payload:Object.values(COURSES)});
1921
2022
}, 1500);
23+
24+
*/
2125
}
2226

2327

src/app/messages/messages.component.html

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
1-
<div class="messages-container" *ngIf="showMessages">
21

3-
<div class="message" *ngFor="let error of errors">
4-
{{error}}
2+
<ng-container *ngIf="(errors$ | async) as errors">
3+
4+
<div class="messages-container" *ngIf="showMessages">
5+
6+
<div class="message" *ngFor="let error of errors">
7+
{{error}}
8+
</div>
9+
10+
<mat-icon class="close" (click)="onClose()">close</mat-icon>
11+
512
</div>
613

7-
<mat-icon class="close" (click)="onClose()">close</mat-icon>
14+
</ng-container>
15+
816

9-
</div>

src/app/messages/messages.component.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Component, OnInit } from '@angular/core';
22
import {Observable} from 'rxjs';
33
import {Message} from '../model/message';
44
import {tap} from 'rxjs/operators';
5+
import {MessagesService} from './messages.service';
56

67
@Component({
78
selector: 'messages',
@@ -12,13 +13,20 @@ export class MessagesComponent implements OnInit {
1213

1314
showMessages = false;
1415

16+
errors$: Observable<string[]>;
1517

16-
constructor() {
18+
19+
constructor(public messagesService: MessagesService) {
20+
21+
console.log("Created messages component");
1722

1823
}
1924

2025
ngOnInit() {
21-
26+
this.errors$ = this.messagesService.errors$
27+
.pipe(
28+
tap(() => this.showMessages = true)
29+
);
2230

2331
}
2432

src/app/messages/messages.service.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
11
import {Injectable} from '@angular/core';
2+
import {BehaviorSubject, Observable} from 'rxjs';
3+
import {filter} from 'rxjs/operators';
24

35

46
@Injectable()
57
export class MessagesService {
68

9+
private subject = new BehaviorSubject<string[]>([]);
710

8-
showErrors(...errors: string[]) {
11+
errors$: Observable<string[]> = this.subject.asObservable()
12+
.pipe(
13+
filter(messages => messages && messages.length > 0)
14+
);
915

16+
showErrors(...errors: string[]) {
17+
this.subject.next(errors);
1018
}
1119

1220
}

0 commit comments

Comments
 (0)