Обычно рекомендуется вводить код доступа к данным в службу, а не в компонент.
Обычно я использую почту для создания новых данных и для обновления существующих данных.
MyМетод обновления (в моей службе доступа к данным) выглядит следующим образом:
updateProduct(product: Product): Observable<Product> {
const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
const url = `${this.productsUrl}/${product.id}`;
return this.http.put<Product>(url, product, { headers: headers })
.pipe(
tap(() => console.log('updateProduct: ' + product.id)),
// Return the product on an update
map(() => product),
catchError(this.handleError)
);
}
Обратите внимание, что я не строжайше передаваемых данных.Также я не преобразовываю результат в обещание.
Относительно вашего кода:
1) Рассмотрите возможность перемещения кода доступа к данным в службу.
2) Где вы используетеUpdatePerson
функция?(Где он вызывается?)
3) При создании функции с использованием ключевого слова function
вместо функции стрелки =>
, this
становится ограниченным для функции, и вы фактически не получаете доступуровень класса personObj
4) Мне неясно, нужно ли person
и personObj
?
Если вам нужен рабочий пример кода с помощью create, updateи операции удаления, вы можете найти пример здесь: https://github.com/DeborahK/Angular-ReactiveForms/tree/master/APM
Вы можете увидеть / выполнить его в stackblitz здесь: https://stackblitz.com/edit/deborahk-crud