Хорошей практикой будет передача ваших сообщений и функции getPosts () вашему пост-сервису.Это будет работать независимо от иерархии компонентов:
private _posts = new BehaviorSubject<PostModel[]>([]);
getPosts() {
return this._posts.asObservable();
}
Вы извлекаете данные с помощью отдельной функции для вызова вашего API, затем используете .next()
, чтобы передать результат в _posts
fetchPosts() {
// replace with your api, i.e. HttpClient
someApi.get()
.then(result => this._posts.next(result))
.catch(err => { // handle error });
}
Вы можете создать столько get()
функций, сколько захотите, все они будут иметь один и тот же источник данных:
getRecentPosts() {
return this._posts.asObservable().pipe(
filter(post => { // filter logic }),
map(post => { // map logic })
)
}
Затем внутри вашей функции postService.create()
вы можете манипулировать вашим массивом сообщений.В своем шаблоне вы используете postService.getPosts()
, чтобы оставаться в курсе.