Angular CRUD
This guide demonstrates how to implement Create, Read, Update, and Delete (CRUD) operations in an Angular application. Angular, being a frontend framework, focuses on interacting with REST APIs to perform CRUD operations while managing the UI.
1. Setting Up Angular Environment
Before building CRUD, ensure your Angular environment is set up.
Install Angular CLI:
bash
npm install -g @angular/cli
1. Create a new Angular project:
bash
ng new angular-crud-app
cd angular-crud-app
2. Install the required libraries for HTTP communication:
bash
npm install @angular/common @angular/core
2. Angular CRUD Operations
Create (POST)
The Create operation involves sending data to a REST API using an HTTP POST request.
Example: Service Code
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root',
})
export class UserService {
private apiUrl = 'https://example.com/api/users';
constructor(private http: HttpClient) {}
createUser(user: any): Observable<any> {
return this.http.post(this.apiUrl, user);
}
}
Example: Component Code
import { Component } from '@angular/core';
import { UserService } from './user.service';
@Component({
selector: 'app-create-user',
template: `
<form (submit)="onSubmit()">
<input [(ngModel)]="name" placeholder="Name" />
<input [(ngModel)]="email" placeholder="Email" />
<button type="submit">Create</button>
</form>
`,
})
export class CreateUserComponent {
name: string = '';
email: string = '';
constructor(private userService: UserService) {}
onSubmit() {
const user = { name: this.name, email: this.email };
this.userService.createUser(user).subscribe((response) => {
console.log('User Created:', response);
});
}
}
Read (GET)
The Read operation retrieves data from a REST API using an HTTP GET request.
Example: Service Code
getUsers(): Observable<any[]> {
return this.http.get<any[]>(this.apiUrl);
}
Example: Component Code
import { Component, OnInit } from '@angular/core';
import { UserService } from './user.service';
@Component({
selector: 'app-user-list',
template: `
<ul>
<li *ngFor="let user of users">{{ user.name }} - {{ user.email }}</li>
</ul>
`,
})
export class UserListComponent implements OnInit {
users: any[] = [];
constructor(private userService: UserService) {}
ngOnInit() {
this.userService.getUsers().subscribe((data) => {
this.users = data;
});
}
}
Update (PUT)
The Update operation modifies existing data via an HTTP PUT request.
Example: Service Code
updateUser(id: number, user: any): Observable<any> {
return this.http.put(`${this.apiUrl}/${id}`, user);
}
Example: Component Code
import { Component } from '@angular/core';
import { UserService } from './user.service';
@Component({
selector: 'app-update-user',
template: `
<form (submit)="onSubmit()">
<input [(ngModel)]="id" placeholder="User ID" />
<input [(ngModel)]="name" placeholder="Name" />
<input [(ngModel)]="email" placeholder="Email" />
<button type="submit">Update</button>
</form>
`,
})
export class UpdateUserComponent {
id: number = 0;
name: string = '';
email: string = '';
constructor(private userService: UserService) {}
onSubmit() {
const user = { name: this.name, email: this.email };
this.userService.updateUser(this.id, user).subscribe((response) => {
console.log('User Updated:', response);
});
}
}
Delete (DELETE)
The Delete operation removes data using an HTTP DELETE request.
Example: Service Code
deleteUser(id: number): Observable<any> {
return this.http.delete(`${this.apiUrl}/${id}`);
}
Example: Component Code
import { Component } from '@angular/core';
import { UserService } from './user.service';
@Component({
selector: 'app-delete-user',
template: `
<input [(ngModel)]="id" placeholder="User ID" />
<button (click)="onDelete()">Delete</button>
`,
})
export class DeleteUserComponent {
id: number = 0;
constructor(private userService: UserService) {}
onDelete() {
this.userService.deleteUser(this.id).subscribe(() => {
console.log('User Deleted');
});
}
}
Notable libraries and example projects
Let explore some examples to better understand the concept of the CRUD software:
- Angular App - Example CRUD application built with Angular for learning purposes
- Remult - Full-stack CRUD framework for Angular and other frontends with integrated backend support
- Forms-Angular - Angular framework for building CRUD apps with dynamic form generation based on Mongoose schemas