TL; DR: Узнайте о подписках и темах, а также о том, как установить связь между компонентом и службой.Вы можете достичь желаемого, либо сделав запрос GET после успешного выполнения запроса DELETE, либо обновив свой пользовательский интерфейс, локально удалив элемент из списка после выполнения успешного запроса DELETE.
Более длинная версия:
Идея может быть следующей:
Если вы сделаете изменение, которое вы захотите увидеть позже (например, 99,9% приложений), выВы захотите сделать бэкэнд-вызов.
То, как вы обновляете свой вид пользовательского интерфейса, зависит от того, как вы хотите продолжить его, после того, как вы сделали бэкэнд-вызов .
Итак, рассмотрим случай, когда вы удаляете элемент из списка.Вы отправляете запрос на удаление этого конкретного элемента и получаете ответ от бэкэнда.В этом ответе должно быть указано, была ли выполненная вами операция удаления успешной.
На основе этой информации вы можете
1) найти элемент в списке, выполнив итерацию по нему и удалить его.локально (быстрее)
2) сделать еще один GET-запрос к бэкэнду и отобразить недавно обновленный результат после успешного удаления (безопаснее, но в итоге вы делаете 2 запроса для каждой операции).
Вопрос о том, как вы могли бы подойти к вопросу «удаляется ли удаление», зависит от вашей реализации, но я поделюсь одним из них ниже.
Для этого было бы полезно прочитать о Подписки и Субъекты с использованием rxjs .Я напишу, следуя второму варианту, который я упомянул выше.
В службе, в которой вы делаете вызов, вы можете создать тему.Вы будете использовать эту тему, чтобы уведомлять слушателей (то есть, кто подписался на это событие) о любых обновлениях, используя метод next .
В своем сервисе вы можете создать новую тему следующим образом:
private _deleteOperationSuccessfulEvent$: Subject<boolean> = new Subject();
и создайте для него метод получения следующим образом:
get deleteOperationSuccessfulEvent$(): Observable<boolean> {
return this._deleteOperationSuccessfulEvent$.asObservable();
}
Когда вы получите ответ на запрос HTTP DELETE, основанный на успехе или неудаче, вы можете выдать истинное значениеили ложное значение следующим образом:
this._deleteOperationSuccessfulEvent$.next(true);
Пока мы выдаем информацию, что операция удаления была успешной или нет.
Но никто пока не слушает.Таким образом, в вашем компоненте вы можете создать подписку:
deleteOperationSuccessfulSubscription: Subscription;
, а в своем методе ngOnInit вы можете подписаться на deleteOperationSuccessfulEvent $, созданный в вашей службе:
this.deleteOperationSuccessfulSubscription = this.yourService.deleteOperationSuccessfulEvent$.subscribe(...stuff will come here...);
(обратите внимание, что мы использовали значение deleteOperationSuccessfulEvent $, а не личное _deleteOperationSuccessfulEvent $.)
Теперь ваш компонент прослушивает событие delete .. вашего сервиса.Нам просто нужно принять меры.
this.deleteOperationSuccessfulSubscription = this.yourService.deleteOperationSuccessfulEvent$
.subscribe(isSuccessful => {
if (isSuccessful === true) {
make a GET request and display the returning data, following similar steps to which we followed so far
} else {
delete operation was NOT successful, you can display an error or retry etc.
}
});
Дайте мне знать, если у вас есть какие-либо вопросы.