を使用しています。キーは、displayWith
と(onSelect)
を使用して以下のようにオブジェクトの選択を処理することです。
HTML:
<md-input-container>
<input type="text" mdInput [formControl]="searchControl" [mdAutocomplete]="usersComp"/>
</md-input-container>
<md-autocomplete #usersComp="mdAutocomplete" [displayWith]="getDisplayFn()">
<md-option *ngFor="let user of filteredOptions | async" [value]="user" (onSelect)="selected(user)">
{{user.displayName}}
</md-option>
</md-autocomplete>
コンポーネント:あなたは、できるだけ簡潔あなたの質問をする必要があるのStackOverflowで
export class UserSelectComponent implements OnInit {
@Input() value: any;
@Output() valueChange = new EventEmitter();
searchControl: FormControl = new FormControl();
filteredOptions: BehaviorSubject<any[]> = new BehaviorSubject(undefined);
constructor(private api: ApiService) {
this.searchControl.valueChanges.subscribe(data => {
if (typeof data === 'string' && data.trim() !== '') {
this.filter(data);
}
});
}
ngOnInit() {
this.searchControl.setValue(this.value ? this.value : '');
}
private filter(search: string) {
this.api.get(`search/user/${search}`).subscribe(data => this.filteredOptions.next(data));
}
private getDisplayFn() {
return (val) => this.display(val);
}
private display(user): string {
//access component "this" here
return user ? user.displayName : user;
}
private selected(user) {
this.value = user;
//send to parent or do whatever you want to do
this.valueChange.emit(user);
}
}
出典
2017-04-10 15:05:42
PeS
は、角度-材料からバグ要求をコピーし、それをここに貼り付けられません。 –