Friday, April 19, 2024
AngularAngular 16Angular 17Angular CrudBootstrap 5

Angular 17 Crud Tutorial Working Example

Angular 17 Crud Tutorial Working Example

Hello to all, welcome to In this post, I will tell you, Angular 17 Crud Tutorial Working Example.

Guys with this we will cover below things:

  1. Angular 17 Reactive Form Implelemtnation.
  2. Angular17 Reactive Form Responsiveness with Bootstrap 5.
  3. Angular 17 with Local Storage data saving.
Live Demo
Angular 17 Crud Tutorial Working Example
Angular 17 Crud Tutorial Working Example

Angular 17 came and if you are new then you must check below link:

  1. Angular 17 Tutorials

Here is the code snippet and please use carefully:

1. Very first guys, here are common basics steps to add angular 17 (crud) application on your machine and also we must have latest nodejs latest version installed for angular 17:

$ npm install -g @angular/cli

$ ng new angularform // Set Angular 17 Application on your pc

cd angularform // Go inside project folder

2. Now run below commands to set bootstrap 5 modules into our angular 17 application for responsiveness (optional):

npm install bootstrap

npm i @popperjs/core

3. Now friends we just need to add below code into angularform/angular.json file (optional):

"styles": [

4. Now guys we will add below code into our angularform/src/app/app.component.ts file:

import { Component } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { ReactiveFormsModule } from '@angular/forms';
import { CommonModule } from '@angular/common';
  selector: 'app-root',
  standalone: true,
  templateUrl: './app.component.html',
  imports: [CommonModule, ReactiveFormsModule],
  styleUrls: ['./app.component.css']
export class AppComponent {
  title = 'angular17demos';

   loginForm: FormGroup;
  loginList: any[] = [];
  selectedIndex: number = -1;
  isEditMode: boolean = false;
  isSubmitMode: boolean = true;
  passwordFieldType: string = 'password'; // To toggle password field type

  constructor(private formBuilder: FormBuilder) {
    this.loginForm ={
      Email: [''],
      Password: [''],

  ngOnInit(): void {
    let data = localStorage.getItem('loginList');
    this.loginList = JSON.parse(data || '[]');

  submit() {
    if (this.isEditMode) {
    } else {

  edit(i: number) {
      Email: this.loginList[i].Email,
      Password: this.loginList[i].Password,
    this.selectedIndex = i;
    this.isEditMode = true;
    this.isSubmitMode = false;

  updateData() {
    if (this.selectedIndex !== -1) {
      this.loginList[this.selectedIndex].Email = this.loginForm.value.Email;
      this.loginList[this.selectedIndex].Password = this.loginForm.value.Password;
      localStorage.setItem('loginList', JSON.stringify(this.loginList));

  addNewData() {
    localStorage.setItem('loginList', JSON.stringify(this.loginList));

  clear() {

  clearEditMode() {
    this.selectedIndex = -1;
    this.isEditMode = false;
    this.isSubmitMode = true;

  delete(i: number) {
    this.loginList.splice(i, 1);
    localStorage.setItem('loginList', JSON.stringify(this.loginList));

  togglePasswordVisibility() {
    this.passwordFieldType = this.passwordFieldType === 'password' ? 'text' : 'password';

5. Finally we will add below code into our angularform/src/app/app.component.html file:

<div class="container mt-5 mb-5">
    <div class="row">
        <div class="col-lg-4">
            <form [formGroup]="loginForm" class="bg-light p-4 rounded">
                <h3 class="mb-4">{{ isEditMode ? 'Edit' : 'Add' }} User</h3>
                <div class="mb-3">
                    <label for="exampleInputEmail1" class="form-label">Email address</label>
                    <input class="form-control" formControlName="Email" placeholder="Enter your email">

                <div class="mb-3">
                    <label for="exampleInputPassword1" class="form-label">Password</label>
                    <input [type]="passwordFieldType" class="form-control" formControlName="Password"
                        placeholder="Enter your password">

                <div class="mb-3 form-check">
                    <input type="checkbox" class="form-check-input" id="showPasswordCheckbox"
                    <label class="form-check-label" for="showPasswordCheckbox">Show Password</label>

                <div class="text-center">
                    <button type="button" class="btn btn-dark me-2" (click)="clear()">Clear</button>
                    <button type="button" class="btn btn-success ml-2" (click)="submit()">{{ isEditMode ? 'Update' :
                        'Submit' }}</button>

        <div class="col-lg-8">
            <table class="table table-striped table-bordered">
                <thead class="thead-dark">
                        <th scope="col">#</th>
                        <th scope="col">Email</th>
                        <th scope="col">Password</th>
                    <tr *ngFor="let l of loginList; let i = index">
                        <td>{{i + 1}}</td>
                            <button type="button" class="btn btn-primary btn-sm me-2" (click)="edit(i)">Edit</button>
                            <button type="button" class="btn btn-danger btn-sm ml-1" (click)="delete(i)">Delete</button>

Now we are done friends and please run ng serve command to check the output in browser(locahost:4200) and if you have any kind of query then please do comment below.

Note: Friends, I just tell the basic setup and things, you can change the code according to your requirements. For better understanding please watch video above.

Guys I will appreciate that if you will tell your views for this post. Nothing matters if your views will be good or bad.



the authortherichpost
Hello to all. Welcome to Myself Ajay Malhotra and I am freelance full stack developer. I love coding. I know WordPress, Core php, Angularjs, Angular 14, Angular 15, Angular 16, Angular 17, Bootstrap 5, Nodejs, Laravel, Codeigniter, Shopify, Squarespace, jQuery, Google Map Api, Vuejs, Reactjs, Big commerce etc.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.