У меня есть компонент с именем customers-list
, где я отображаю всех своих клиентов из API:
клиенты-list.html
<div *ngFor="let customer of customers">
<p>{{customer.name}</p>
</div>
клиенты-list.ts
import { Component Input} from '@angular/core';
import { ICustomer} from 'src/app/models/app.models';
import { CustomersService } from 'src/app/services/customers.service';
@Component({
selector: 'drt-customers-list',
templateUrl: './customers-list.component.html',
styleUrls: ['./customers-list.component.scss'],
})
export class CustomerListComponent {
public customers: ICustomer[] ;
constructor(public customersService: CustomersService,) {}
public async ngOnInit(): Promise<void> {
this.customers = await this.customersService.getCustomersList('');
}
}
У меня есть еще один компонент с именем add-customer
, в который я добавлю нового клиента, например:
public onaddCustomer(): void {
this.someCustomer = this.addCustomerForm.value;
this.customersService.addCustomer( this.someCustomer).subscribe(
() => { // If POST is success
this.successMessage();
},
(error) => { // If POST is failed
this.failureMessage();
}
);
}
Теперь POST
операция происходит нормально, но customer-list
не обновляется без обновления страницы.
Как я могу обновить компонент customers-list
после успешной операции POST
, не обновляя всю страницу?
файл услуг:
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { ICustomer} from 'src/app/models/app.models';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root',
})
export class CustomersService {
private baseUrl : string = '....api URL....';
public async getCustomersList(): Promise<ICustomer[]> {
const apiUrl: string = `${this.baseUrl}/customers`;
return this.http.get<ICustomer[]>(apiUrl).toPromise();
}
public addCustomer(customer: ICustomer): Observable<object> {
const apiUrl: string = `${this.baseUrl}/customers`;
return this.http.post(apiUrl, customer);
}
}