Служба рефакторинга для включения части ответа на http-вызов

#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. Спасибо тебе, Брэндон. я спросил как, не если, но спасибо