У меня есть компонент, в который я добавляю новый объект с именем customer
, вызывая api
следующим образом:
public onAdd(): void {
this.myCustomer = this.customerForm.value;
this.myService.addCustomer(this.myCustome).subscribe(
() => { // If POST is success
this.callSuccessMethod();
},
(error) => { // If POST is failed
this.callFailureMethod();
},
);
}
Сервисный файл:
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable, Subject } from 'rxjs';
import {ICustomer } from 'src/app/models/app.models';
@Injectable({
providedIn: 'root',
})
export class MyService {
private baseUrl : string = '....URL....';
constructor(private http: HttpClient) {}
public addCustomer(customer: ICustomer): Observable<object> {
const apiUrl: string = `${this.baseUrl}/customers`;
return this.http.post(apiUrl, customer);
}
}
Как показано в коде компонента, я уже подписался на вызов api
следующим образом:
this.myService.addCustomer(this.myCustome).subscribe(
() => { // If POST is success
.....
},
(error) => { // If POST is failed
...
},
);
Но я хочу подписать результаты в другом компоненте, я пробовал так:
public getAddedCustomer() {
this.myService.addCustomer().subscribe(
(data:ICustomer) => {
this.addedCustomer.id = data.id; <======
}
);
}
Я получаю эту ошибку: Expected 1 arguments, but got 0
, поскольку я не передаю parameter
.
Каков правильный подход для подписки вызова API в других компонентах? после POST операции.
Потому что я хочу получить идентификатор объекта для других функций.