Angular cascading mat-select dropdowns Archives - Tech Insights Unveiling Tomorrow's Tech Today, Where Innovation Meets Insight Fri, 08 Sep 2023 07:12:24 +0000 en-US hourly 1 https://wordpress.org/?v=6.6.1 https://i0.wp.com/reactconf.org/wp-content/uploads/2023/11/cropped-reactconf.png?fit=32%2C32&ssl=1 Angular cascading mat-select dropdowns Archives - Tech Insights 32 32 230003556 How to Create a Cascading Dropdown List in Angular https://reactconf.org/how-to-create-a-cascading-dropdown-list-in-angular/ https://reactconf.org/how-to-create-a-cascading-dropdown-list-in-angular/#respond Fri, 08 Sep 2023 07:12:24 +0000 https://labpys.com/?p=1561 In this article, we will learn How to Create a Cascading Dropdown List in Angular. In any web application Cascading or Dependent Dropdown List is a common requirement. Let’s understand …

The post How to Create a Cascading Dropdown List in Angular appeared first on Tech Insights.

]]>
In this article, we will learn How to Create a Cascading Dropdown List in Angular. In any web application Cascading or Dependent Dropdown List is a common requirement.

Let’s understand what cascading dropdowns are and why they are beneficial. A cascading dropdown also known as a dependent or interconnected dropdown, means one dropdown depends on the other.

This dynamic behavior can significantly improve the user experience, especially in scenarios where data hierarchy or interdependencies exist.

Let’s get started

Create a New Angular Project

ng new cascadingdropdown

Create Json Data

path:/assets/data.json

{"countries":[
 {
    "id" : 1,
    "name":"USA"
 },
 {
    "id" : 2,
    "name":"Australia"
 },
 {
    "id" : 3,
    "name":"Germany"
 },
 {
    "id" : 4,
    "name":"England"
 }
],
"states":[
    {
        "id" : 1,
        "name":"Califonia",
        "country_id":1

     },
     {
        "id" : 2,
        "name":"Colorado",
        "country_id":1

     },
     {
        "id" : 3,
        "name":"Sydney",
        "country_id":2

     },
     {
        "id" : 4,
        "name":"Adelaide",
        "country_id":2

     },
     {
        "id" : 5,
        "name":"Belin",
        "country_id":3

     },
     {
        "id" : 6,
        "name":"Hamburg",
        "country_id":3

     },
     {
        "id" : 7,
        "name":"London",
        "country_id":4

     },
     {
        "id" : 8,
        "name":"East of England",
        "country_id":4

     }
]
}

Create Services

Next, write the service for fetching data, In this instance, we will utilize a JSON data file which is located in the assets folder.

ng g s Services/dropdownservices.service  --skip-tests

path: Services/dropdownservices.service.ts

import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class DropdownservicesService {
  baseurl = 'assets/data.json';

  constructor(private http:HttpClient) { }
 
  getAll():any{
    return this.http.get<any>(this.baseurl);
  }  
}

Create Component

ng g c dropdown/dropdown –skip-tests

path:/ dropdown/dropdown.ts

import { Component, OnInit } from '@angular/core';
import { DropdownservicesService } from '../services/dropdownservices.service';

@Component({
  selector: 'app-dropdown',
  templateUrl: './dropdown.component.html',
  styleUrls: ['./dropdown.component.css']
})
export class DropdownComponent implements OnInit {
  
  countries : any;
  states:any;

  selectedvalue:any={
    id:0,name: ''
  }

  constructor(private dropdwonservice:DropdownservicesService){}

  ngOnInit(): void {
     this.getall();
     this.onsubmit(this.selectedvalue.id);
  }

  getall(){
    this.dropdwonservice.getAll()
      .subscribe((data:any)=>{
        this.countries = data,
        console.log(this.countries)
      })
  }
  onsubmit(country_id:any){
    this.dropdwonservice.getAll().subscribe((response:any)=>{
      this.states = response['states'].filter(
        (response:any)=> response.country_id == country_id!.value
      ),
      console.log(this.states);
    })
  }
}

path:/ dropdown/dropdown.html

<div>
    <label for="country">Country</label>
    <div class="input-group input-group-sm mb-3">
        <select  [(ngModel)]="selectedvalue.id" (change)="onsubmit($event.target)" class="form-select">
            <option value="0">--Select country--</option>
            <option *ngFor="let country of countries?.countries" [value]="country.id">{{ country.name }} </option>
        </select>
    </div>

    <label for="state">State</label>
    <div class="input-group input-group-sm mb-3">
        <select class="form-select">
            <option value="0">--Select country--</option>
            <option *ngFor="let state of states" [value]="state.id">{{ state.name }} </option>
        </select>
    </div>
</div>

App Module

You must import  HttpClientModule and FormsModule in the AppModule

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { DropdownComponent } from './dropdown/dropdown.component';
import { HttpClientModule } from '@angular/common/http'
import { FormsModule } from '@angular/forms'

@NgModule({
  declarations: [
    AppComponent,
    DropdownComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    HttpClientModule,
    FormsModule
     
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

update app.component.ts

<div class="d-flex justify-content-center mt-5">
   
    <div class="col-0">
    <app-dropdown></app-dropdown>
    </div>
</div> 

More Related Articles – Create CRUD operation using Angular and ASP.NET Core Web API

 How to Create a Cascading Dropdown List in Angular

Conclusion

Creating a Cascading Dropdown List in Angular enhances the user experience by providing dynamic and context-aware options. By following the steps outlined in this article, you can easily implement this feature in your Angular applications.

The post How to Create a Cascading Dropdown List in Angular appeared first on Tech Insights.

]]>
https://reactconf.org/how-to-create-a-cascading-dropdown-list-in-angular/feed/ 0 1561