Implement a search filter for the <mat-select> component of angular material

Discussão em 'Angular' iniciado por Heena, Dezembro 26, 2024.

  1. Heena

    Heena Guest

    Trying to implement a simple application in angular 2 using angular material.
    I implemented a simple table with pagination .

    I also used mat-select component, but for this i want implement a search filter to type and search the required option from the list.

    Below shown is my .html file


    <table>
    <tr><td> Department</td>
    <td>
    <mat-form-field>
    <mat-select placeholder=" ">
    <mat-option> </mat-option>
    <mat-option *ngFor="let dep of dept" [value]="dep">{{dep}}</mat-option>
    </mat-select>
    </mat-form-field><br/>
    </td>
    </tr>


    </table>

    <br><br>

    <button >Search</button>

    <button >Reset</button>

    <button >Close</button>


    <mat-card>
    <div class="example-container mat-elevation-z8">
    <mat-table #table [dataSource]="dataSource">

    <!-- Account No. Column -->
    <ng-container matColumnDef="accno">
    <mat-header-cell *matHeaderCellDef> Account No. </mat-header-cell>
    <mat-cell *matCellDef="let element"> {{element.accno}} </mat-cell>
    </ng-container>

    <!-- Account Description Column -->
    <ng-container matColumnDef="accdesc">
    <mat-header-cell *matHeaderCellDef> Account Description </mat-header-cell>
    <mat-cell *matCellDef="let element"> {{element.accdesc}} </mat-cell>
    </ng-container>

    <!-- Investigator Column -->
    <ng-container matColumnDef="investigator">
    <mat-header-cell *matHeaderCellDef> Investigator </mat-header-cell>
    <mat-cell *matCellDef="let element"> {{element.investigator}} </mat-cell>
    </ng-container>

    <!-- Account CPC Column -->
    <ng-container matColumnDef="accCPC">
    <mat-header-cell *matHeaderCellDef> Account CPC </mat-header-cell>
    <mat-cell *matCellDef="let element"> {{element.accCPC}} </mat-cell>
    </ng-container>

    <!-- Location Column -->
    <ng-container matColumnDef="location">
    <mat-header-cell *matHeaderCellDef> Location </mat-header-cell>
    <mat-cell *matCellDef="let element"> {{element.location}} </mat-cell>
    </ng-container>


    <!-- Client Dept ID Column -->
    <ng-container matColumnDef="cdeptid">
    <mat-header-cell *matHeaderCellDef> ClientDeptID </mat-header-cell>
    <mat-cell *matCellDef="let element"> {{element.cdeptid}} </mat-cell>
    </ng-container>


    <!-- Dept Description Column -->
    <ng-container matColumnDef="depdesc">
    <mat-header-cell *matHeaderCellDef> Dept Description </mat-header-cell>
    <mat-cell *matCellDef="let element"> {{element.depdesc}} </mat-cell>
    </ng-container>


    <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
    <mat-row *matRowDef="let row; columns: displayedColumns;"></mat-row>
    </mat-table>

    <mat-paginator #paginator
    [pageSize]="10"
    [pageSizeOptions]="[5, 10, 20]">
    </mat-paginator>
    </div>
    </mat-card>

    Below shown is my .ts file


    import {Component, ViewChild} from '@angular/core';
    import {MatPaginator, MatTableDataSource} from '@angular/material';

    @Component({
    selector: 'app-account',
    templateUrl: './account.component.html',
    styleUrls: ['./account.component.scss']
    })

    export class AccountComponent {



    dept = [
    'Administrative Computer',
    'Agosta Laboratory',
    'Allis Laboratory',
    'Bargaman Laboratory',
    'Bio-Imaging Resource Center',
    'Capital Projects',
    'Casanova Laboratory',
    'Darst Laboratory',
    'Darnell James Laboratory',
    'Deans Office',
    'Energy Consultant',
    'Electronic Shop',
    'Facilities Management',
    'Field Laboratory'
    ];


    displayedColumns = ['accno', 'accdesc', 'investigator', 'accCPC','location','cdeptid','depdesc'];
    dataSource = new MatTableDataSource<Element>(ELEMENT_DATA);

    @ViewChild(MatPaginator) paginator: MatPaginator;

    ngAfterViewInit() {
    this.dataSource.paginator = this.paginator;
    }
    }

    export interface Element {
    accno: number;
    accdesc: string;
    investigator: string;
    accCPC: string;
    location:string;
    cdeptid: number;
    depdesc: string;
    }

    const ELEMENT_DATA: Element[] = [
    {accno: 5400343, accdesc: 'ASTRALIS LTD', investigator:'Kruger, James G.', accCPC: 'OR',location:'ON',cdeptid: 110350,depdesc: 'Kruger Laboratory'}

    ];


    can anybody please help me to implement search filter with mat-select component in my application?

    Continue reading...

Compartilhe esta Página