DELETE One Item From a List in Angular
March 28, 2020
In this video, we’re going to implement a deleteFlight(id) function to remove a record from a list of flight data. For this exercise, we’re going to remove data from RAM only and not from a permanent data store. The best option for this operation is to use the two JavaScript built-in functions: findIndex() and splice(). First, we will use the findIndex()
function to return the index position of a matching id field, then use the splice()
function remove the element from the list.
The source files are available below.
Template file.
<div class="table-responsive rounded bg-light p-4 my-4">
<div class="mb-2">
<p class="font-weight-bold">Active Flight Schedule</p>
</div>
<table class="table table-hover">
<thead class="table-borderless table-secondary">
<tr>
<th scope="col">No.</th>
<th scope="col">Airline</th>
<th scope="col">Flight No.</th>
<th scope="col">Trip Type</th>
<th scope="col">Departure Airport</th>
<th scope="col">Arrival Airport</th>
<th scope="col">Departure Date</th>
<th scope="col">Return Date</th>
<th scope="col">Actions</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let flight of flights">
<td scope="row">{{flight.id}}</td>
<td>{{flight.airline}}</td>
<td>{{flight.flight_no}}</td>
<td>{{flight.trip_type}}</td>
<td>{{flight.departure_airport}}</td>
<td>{{flight.arrival_airport}}</td>
<td>{{flight.departure_date}}</td>
<td>{{flight.return_date}}</td>
<td>
<a href="/edit/{{flight.id}}" type="button" class="btn btn-success btn-sm text-white mr-2">Edit</a>
<button (click)="deleteFlight(flight.id)" type="button" class="btn btn-danger btn-sm">Delete</button>
</td>
</tr>
</tbody>
</table>
</div>
The source file (flight-list-component.ts)
xxxxxxxxxx
import { Component, OnInit, Input } from '@angular/core';
@Component({
selector: 'app-flight-list',
templateUrl: './flight-list.component.html',
styles: []
})
export class FlightListComponent implements OnInit {
@Input() flights = [];
constructor() { }
ngOnInit(): void {
}
deleteFlight(id){
let index = this.flights.findIndex( e => e.id === id);
if(index !== -1){
this.flights.splice(index,1);
}
console.log(id);
}
}
The JSON data
xxxxxxxxxx
export const FlightData = [
{
"id": 1,
"airline": "United Airlines",
"flight_no": "UA1234",
"trip_type": "Round Trip",
"departure_airport": "ORD",
"arrival_airport": "LAX",
"departure_date": "2019-06-24",
"return_date": "2019-06-25"
},
{
"id": 2,
"airline": "American Airlines",
"flight_no": "AA1952",
"trip_type": "One Way",
"departure_airport": "LAX",
"arrival_airport": "ABQ",
"departure_date": "2019-06-25",
"return_date": "2019-06-26"
},
{
"id": 3,
"airline": "Southwest Airlines",
"flight_no": "WN4307",
"trip_type": "Round Trip",
"departure_airport": "ORD",
"arrival_airport": "DEN",
"departure_date": "2019-06-25",
"return_date": "2019-06-26"
},
{
"id": 4,
"airline": "Alaska Airlines",
"flight_no": "AS1677",
"trip_type": "One Way",
"departure_airport": "BOS",
"arrival_airport": "CLT",
"departure_date": "2019-06-27",
"return_date": "2019-06-28"
},
{
"id": 5,
"airline": "Hawaiian Airlines",
"flight_no": "HA4233",
"trip_type": "Round Trip",
"departure_airport": "HNL",
"arrival_airport": "LAX",
"departure_date": "2019-06-28",
"return_date": "2019-06-29"
},
{
"id": 6,
"airline": "Virgin Atlantic",
"flight_no": "VS1980",
"trip_type": "Round Trip",
"departure_airport": "SEA",
"arrival_airport": "LHR",
"departure_date": "2019-06-29",
"return_date": "2019-07-02"
},
{
"id": 7,
"airline": "Korean Air",
"flight_no": "KE5233",
"trip_type": "One Way",
"departure_airport": "ORD",
"arrival_airport": "ICN",
"departure_date": "2019-06-28",
"return_date": "2019-07-02"
},
{
"id": 8,
"airline": "Delta Air Lines",
"flight_no": "DL1889",
"trip_type": "One Way",
"departure_airport": "MIA",
"arrival_airport": "ORD",
"departure_date": "2019-07-01",
"return_date": "2019-07-02"
},
{
"id": 9,
"airline": "Malasia Airlines",
"flight_no": "MH9880",
"trip_type": "Round Trip",
"departure_airport": "JFK",
"arrival_airport": "KUL",
"departure_date": "2019-06-29",
"return_date": "2019-07-03"
},
{
"id": 10,
"airline": "Air New Zealand",
"flight_no": "NZ8029",
"trip_type": "One Way",
"departure_airport": "DEN",
"arrival_airport": "ALR",
"departure_date": "2019-06-28",
"return_date": "2019-07-02"
}
]