У меня есть служба, которая получает «сообщения» с сервера, которые затем отображаются в «домашнем» компоненте моего приложения.У меня также есть форма на домашнем компоненте, и сообщения могут быть удалены.Я хочу обновить компонент сразу после создания нового сообщения (с формой) или после удаления сообщения.В настоящее время Post / Delete работает, но мне нужно обновить страницу, чтобы отобразились изменения.
Я пробовал «GET» после post / delete, но все равно не работает.Я предполагаю, что данные не успевают быть удалены / опубликованы до того, как будет выполнена строка кода GET.Я также попытался создать перехватчик и перехватывать каждый HTTP-запрос, но это, похоже, тоже не работает.Любые предложения о том, что я должен изучить.Я довольно плохо знаком с Angular (и веб-разработкой в целом).
[api.service.ts]
@Injectable({
providedIn: "root"
})
getHomeNotifications(): Observable<HomeComponent[]> {
return this.http.get<HomeComponent[]>(
this.api + "/notification/list/active"
);
}
removeNotification(Notifications): Observable<HomeComponent> {
return this.http.post<HomeComponent>(
this.api + "/notification/expire",
Notifications
);
}
postNotifications(form: HomeComponent): Observable<HomeComponent> {
return this.http.post<HomeComponent>(
this.api + "/notification/create",
form
);
}
[перехватчик]
intercept(req: HttpRequest<any>, next: HttpHandler):
Observable<HttpEvent<any>> {
return next.handle(req).pipe(finalize(()=>
this.apiService.getCurrentNotifications()
}
[home.component.ts]
getCurrentNotifications(): void {
this.apiService.getHomeNotifications().subscribe(data => {
this.notifications = data;
});
}
onRemove(id) {
this.noti = new Notifications();
this.noti.notificationId = id;
this.apiService.removeNotification(this.noti).subscribe();
});
onPost(): void {
this.apiService.postNotifications(this.pushForm.value).subscribe();
}
Моя первая попытка была просто попытаться запустить getCurrentNotifications () после this.apiService.removeNotification (this.noti) .subscribe ();и т. д., но это не сработало.Моя вторая попытка была запустить перехватчик, но там тоже не повезло.