ng g c shared/chips-list
用的chips控件。
1,完成自动建议表单控件模板。
<div [formGroup]="form" class="full-width"> <span>{{label}}</span> <mat-chip-list aria-label="Fish selection"> <mat-chip selected="true" color="primary" *ngFor="let member of members"></mat-chip> </mat-chip-list> <mat-form-field *ngIf="displayInput" class="full-width"> <input matInput type="text" [placeholder]="placeholderText" [matAutoComplete]="autoMembers" formControlName="membersearch" /> </mat-form-field> </div> <!--自动完成--> <mat-autocomplete #autoMembers="matAutocomplete" [displayWith]="displayUser"> <mat-option *ngFor="let item of memberResults$ | async" [value]="item" (onSelectionChange)="handleMemberSelection(item)"> {{item.name}} </mat-option> </mat-autocomplete>
2,搭建一个自定义表达控件的架子出来。
import { FormGroup, NG_VALIDATORS, NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms'; import { Component, forwardRef, OnInit } from '@angular/core'; @Component({ selector: 'app-chips-list', templateUrl: './chips-list.component.html', styleUrls: ['./chips-list.component.scss'], providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ChipsListComponent), multi: true }, { provide: NG_VALIDATORS, useExisting: forwardRef(() => ChipsListComponent), multi: true } ] }) export class ChipsListComponent implements OnInit, ControlValueAccessor { constructor() { } writeValue(obj: any): void { throw new Error('Method not implemented.'); } registerOnChange(fn: any): void { throw new Error('Method not implemented.'); } registerOnTouched(fn: any): void { throw new Error('Method not implemented.'); } ngOnInit(): void { } }
3,