我想为下面的数据做自动填充文本框
Elements = [ { id: 1,name: 'Hydrogen' },{ id: 2,name: 'Helium' },{ id: 3,name: 'Lithium' } ];
HTML
<mat-form-field class="example-full-width"> <input type="text" placeholder="Pick one" aria-label="Number" matInput [formControl]="name" [matAutocomplete]="auto" [errorStateMatcher]="matcher"> <mat-autocomplete autoActiveFirstOption #auto="matAutocomplete" (selectionChange)="elementSelectionChange($event)"> <mat-option *ngFor="let Element of filteredOptions | async" [value]="Element.name"> {{ Element.name}} </mat-option> </mat-autocomplete> <mat-error *ngIf="myForm.hasError('required','name')">Please choose an name</mat-error> </mat-form-field>
零件
export class DialogoverviewExampleDialog implements OnInit{ Elements = [ { id: 1,name: 'Lithium' } ]; matcher = new MyErrorStateMatcher(); selectedElementSymbol: any; myForm: FormGroup; symbol; //name; name: FormControl = new FormControl(); id; filteredOptions: Observable<string[]>; OnInit() { this.filteredOptions = this.name.valueChanges.pipe( startWith(''),map(val => this.filter(val)) ); } filter(val: any): any[] { return this.Elements.filter(Element => { return Element.name.toLowerCase().indexOf(val.toLowerCase()) > -1; }); } constructor( public dialogRef: MatDialogRef<DialogoverviewExampleDialog>,@Inject(MAT_DIALOG_DATA) public data: any,private formBuilder: FormBuilder) { } }
问题是你实现OnInit的方式不正确.在你的table-basic-example.ts中,将OnInit更改为ngOnInit,一切都会正常工作.
原文链接:https://www.f2er.com/angularjs/143140.html