#angular
#угловой
Вопрос:
у меня есть сервис для сущностей типа Recipes, на сервере я вызываю rest api для выполнения операций CRUD, в этом примере мы поговорим об операции удаления.
Операция обслуживания для удаления выглядит следующим образом:
deleteRecipe(index: string) { return this.http.deletelt;stringgt;(`http://localhost:3000/api/recipes/${index}`); }
Ничего особенного здесь нет, я удаляю рецепт с определенным индексом, в компоненте, который вызывает этот метод из службы, удаление выглядит так:
onDeleteRecipe(){ const recipe = this.recipeService.getRecipe(this.id); this.recipeService.deleteRecipe(recipe._id).subscribe({ next: () =gt; { const updateValue = this.recipeService.recipes.value; updateValue.splice(this.id,1); this.recipeService.recipes.next(updateValue); }, error: (error) =gt; { console.log(error) } }); }
Как вы можете видеть, я подписываюсь на наблюдаемое, возвращаемое службой, в следующей части я удаляю локальный элемент, чтобы мне не нужно было снова получать обновленный список рецептов с сервера, а в части ошибок я регистрирую ошибку.
Мой вопрос будет заключаться в том, что для обновления локальных элементов мне нужно получить доступ к списку, хранящемуся в службе, поэтому было бы лучше, если бы я переработал код так, чтобы локальное удаление элемента выполнялось в службе, а в компоненте я просто обрабатывал возможные ошибки. Проблема в том, что я не знаю, как это сделать, поэтому был бы очень признателен за пример для этого.
Пожалуйста, не пытайтесь предложить какой-либо другой рефакторинг, я хочу знать, как выполняется перемещение локального удаления рецепта в службу при обработке ошибки в компоненте.
Комментарии:
1. Нет никакого преимущества в создании субъекта в службе, чтобы вызвать удаление значения в массиве компонента. Если ваш массив рецептов был инкапсулирован в сервисе и вы подписались на него в компоненте, то да, вы хотели бы удалить его в сервисе. Я бы оставил код как есть.
2. Спасибо тебе, Брэндон. я спросил как, не если, но спасибо