36 lines
938 B
TypeScript
36 lines
938 B
TypeScript
import {Post} from './post.model';
|
|
import {Injectable} from '@angular/core';
|
|
import {Subject} from 'rxjs';
|
|
import {HttpClient} from '@angular/common/http';
|
|
|
|
@Injectable({providedIn: 'root'})
|
|
export class PostService{
|
|
private posts: Post[] = [];
|
|
private postUpdated = new Subject<Post[]>();
|
|
|
|
constructor(private http: HttpClient){
|
|
}
|
|
|
|
getPosts(){
|
|
this.http.get<{message: string, posts: Post[]}>('http://localhost:3000/api/posts')
|
|
.subscribe((PostData) => {
|
|
this.posts = PostData.posts;
|
|
this.postUpdated.next([...this.posts]);
|
|
});
|
|
}
|
|
|
|
addPost(title: string, content: string){
|
|
const post: Post={id: '', title: title, content: content};
|
|
this.http.post<{message: string}>('http://localhost:3000/api/posts', post).
|
|
subscribe((responseData) => {
|
|
console.log(responseData.message);
|
|
this.posts.push(post);
|
|
this.postUpdated.next([...this.posts]);
|
|
});
|
|
}
|
|
|
|
getPostUpdateListener() {
|
|
return this.postUpdated;
|
|
}
|
|
}
|