У меня есть компонент с именем AddCustomerComponent
, который я вызываю как компонент диалога. В AddCustomerComponent
после заполнения полей ввода я выполняю POST операцию. Теперь операция POST работает нормально.
Но после POST
операции, основанной на ответе API, я хочу выполнить следующие операции:
- Если POST успешен, тогда диалог (AddCustomerComponent) должен закрыться.
- Если нет, то диалоговое окно не должно закрываться.
Ниже приведены мой код компонента и код службы файла:
HTML
<form [formGroup]="addForm">
<mat-form-field>
<input matInput placeholder="Name" formControlName="name" required>
<mat-error *ngIf="addCusForm.controls.name.hasError('required')">
Please enter your name
</mat-error>
</mat-form-field>
<mat-form-field>
<input placeholder="Email Address" formControlName="email" required>
<mat-error *ngIf="addCusForm.controls.email.hasError('required') ">
Please enter email address
</mat-error>
</mat-form-field>
<button mat-flat-button type="submit" (click)="onAddCustomer()">Save</button>
<button mat-flat-button type="button">Cancel</button>
</form>
TS
import { Component, OnInit } from '@angular/core';
import {
FormBuilder,
FormGroup,
Validators,
} from '@angular/forms';
import { MatDialog, MatDialogRef } from '@angular/material';
import { ICustomer } from 'src/app/models/app.models';
import { CustomersService } from 'src/app/services/customers.service';
@Component({
selector: 'awa-add-customer',
templateUrl: './add-customer.component.html',
styleUrls: ['./add-customer.component.css'],
})
export class AddCustomerComponent implements OnInit {
public addForm: FormGroup;
public someCustomer: ICustomer;
constructor(
private fb: FormBuilder,
public dialog: MatDialog,
public customersService: CustomersService,
) {}
public ngOnInit(): void {
this.addForm = this.fb.group({
name: [null,[Validators.required]],
email: [null,[Validators.required]],
});
}
public onAddCustomer(): void {
this.someCustomer = this.addForm.value;
this.customersService.addCustomer(this.someCustomer);
}
}
Служба Fle
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { ICustomer } from 'src/app/models/app.models';
@Injectable({
providedIn: 'root',
})
export class CustomersService {
private baseUrl : string = '....api URL.....';
constructor(private http: HttpClient) {}
public async addCustomer(customer: ICustomer ): Promise<void> {
const apiUrl: string = `${this.baseUrl}/customers`;
let temp : any;
temp = this.http.post(apiUrl, customer).subscribe(data => {
alert('Customer added successfully');
},error => {
console.log(error);
});
}
}