Request 1
We can use ReactiveFormsModule to allow us to get the value from user input directly and then feed it dynamically to the api.
We also need to import HttpClientModule
To achieve this:
app.module.ts
import {ReactiveFormsModule} from '@angular/forms';
import { HttpClientModule } from '@angular/common/http';
@NgModule({
declarations: [...],
imports: [...,ReactiveFormsModule, HttpClientModule],
providers: []...
After you have imported ReactiveFormsModule,and HttpClientModule we can now use FormBuilder and FormGroup to allow us to dynamically keep track of user input and HttpClient to send get requests to our api.
app.component.ts
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { HttpClient, HttpHeaders } from '@angular/common/http';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
productIDForm: FormGroup;
httpHeaders: new HttpHeaders({
'Content-Type': 'application/json',
})
constructor(
private formBuilder: FormBuilder,
private http: HttpClient
) { }
ngOnInit() {
this.productIDForm = this.formBuilder.group({
'productID': [null, [Validators.required, Validators.nullValidator]]
})
}
onSubmit() {
if (this.productIDForm.invalid) return;
this.getProduct(this.productID.get('productID').value).subscribe(
(res) => {
console.log(res);
// If the request was successful then `res` contains the information about the product.
},
(err) => {
console.log(err);
// If the request failed, `err` contains the information why the failure occured
)
}
getProduct(productID: string): Observable<any> {
return this.http.get(
`http://localhost:8081/api/products?productId=${productID}`,
{ headers: this.httpHeaders }
)
}
}
We now need to bind the input field to productIDForm.
app.component.html
<form [formGroup]="productIDForm">
<input formControlName="productID" type="text" class="user_id_text"/>
</form>
<div>
<input (click)="onSubmit()" type="button" />
</div>
Request 2
We still use the ReactiveFormsModule, FormBuilder and FormGroup to dynamically fetch the user input and sort of bind it to the api PUT request.
app.component.ts
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
productIDForm: FormGroup;
httpHeaders: new HttpHeaders({
'Content-Type': 'application/json',
})
constructor(
private formBuilder: FormBuilder,
private http: HttpClient
) { }
ngOnInit() {
this.productDetailsForm = this.formBuilder.group({
'productID': [null, [Validators.required, Validators.nullValidator]],
'purchaseDate': [null, [Validators.required, Validators.nullValidator]],
'status': [null, [Validators.required, Validators.nullValidator]]
})
}
onSubmit() {
if (this.productDetailsForm.invalid) return;
let recordNewDetails = {
"productId": this.productDetailsForm.get('productID').value,
"purchaseDate": this.productDetailsForm.get('purchaseDate').value,
"status": this.productDetailsForm.get('status').value
}
recordNewDetails = JSON.stringify(recordNewDetails); // This will format `recordNewDetails` to JSON format.
this.updateRecord(recordNewDetails).subscribe(
(res) => {
console.log(res);
// If the request was successful then `res` contains the information about the product.
},
(err) => {
console.log(err);
// If the request failed, `err` contains the information why the failure occured
)
}
updateRecord(productDetails: {}): Observable<any> {
return this.http.put(
`https://localhost:8081/api/updateRecord`m
productDetails,
{ headers: this.httpHeaders }
)
}
}
app.component.html
<form [formGroup]="productDetailsForm">
<input formControlName="productID" type="text" class="user_id_text"/>
<input formControlName="purchaseDate" type="date">
<select formControlName="status">
<option disabled>Select Status Option</option>
<option>Dispatched</option>
</select>
</form>
<div>
<input (click)="onSubmit()" type="button" />
</div>