Мне нужна опция для предварительного выбора автозаполнения со значением, но я все еще могу изменить автозаполнение впоследствии. Это возможно? Я уже пытался использовать атрибут value в элементе input, но это не работает.
userlist.component.html
<mat-form-field>
<input type="text" placeholder="Name" aria-label="Name" matInput [formControl]="myControl" [matAutocomplete]="auto">
<mat-autocomplete #auto="matAutocomplete" [displayWith]="displayFn.bind(this)" (optionSelected)="output($event.option.value)">
<mat-option *ngFor="let option of filteredOptions | async" [value]="option">
{{option.display_name}}
</mat-option>
</mat-autocomplete>
</mat-form-field>
userlist.component.ts
export class AutoUserlistComponent implements OnInit {
myControl = new FormControl();
options;
filteredOptions: Observable<any[]>;
@Output() change = new EventEmitter<any>();
constructor(
private loaderService: LoaderService
) { }
ngOnInit() {
this.options = this.loaderService.getUser();
this.filteredOptions = this.myControl.valueChanges
.pipe(
startWith(''),
map(name => name ? this._filter(name) : this.options.slice())
);
}
displayFn(user): string | undefined {
return user ? user.first_name + ' ' + user.last_name : undefined;
}
private _filter(name: string) {
return this.options.filter(user => {
const searchStr = user.display_name.toLowerCase() + user.ad_login.toLowerCase();
return searchStr.indexOf(name.toLowerCase()) !== -1;
});
}
output(user) {
this.change.emit(user);
}
}