【发布时间】:2017-10-19 15:21:38
【问题描述】:
我正在尝试让自动完成功能显示对象的一个参数但保存另一个参数,到目前为止它似乎没有表现。
代码根据 Material2 自动完成网站:Autocomplete
不同之处在于 [value] 我要保存 'option.Id' 而不是 'option'。
错误在于,虽然它记录了 option.Id,但实际上并没有在输入字段中显示值(将其留空)。
my-comp.html
<md-input-container>
<input type="text" mdInput [formControl]="myControl" [mdAutocomplete]="auto">
</md-input-container>
<md-autocomplete #auto="mdAutocomplete" [displayWith]="displayFn">
<md-option *ngFor="let option of filteredOptions | async" [value]="option.Id">
{{ option.name }}
</md-option>
</md-autocomplete>
my-comp.ts
class MyComp implements OnInit {
myControl = new FormControl();
options = [
new User('Mary', 1),
new User('Shelley', 2),
new User('Igor', 3)
];
filteredOptions: Observable<User[]>;
ngOnInit() {
this.filteredOptions = this.myControl.valueChanges
.startWith(null)
.map(user => user && typeof user === 'object' ? user.name : user)
.map(name => name ? this.filter(name) : this.options.slice());
}
filter(name: string): User[] {
return this.options.filter(option => new RegExp(`^${name}`, 'gi').test(option.name));
}
displayFn(user: User): string {
return user ? user.name : user;
}
}
class User {
name: string;
id: number;
constructor(name: string, id: number)
this.name = name;
this.id = id;
}
【问题讨论】:
-
试试
[ngValue] -
一件小事可能会导致问题。在 ngfor 循环中使用
Id代替id。 -
ngValue 抛出模板解析错误,因为它不是 md 选项的一部分。正在正确设置 ID,只是没有显示值。
标签: angular angular-material2 md-autocomplete