在以下代码中,出现在角度材质示例中: https://stackblitz.com/angular/gorglnbmork?file=app%2Fautocomplete-display-example.ts
ngOnInit() {
this.filteredOptions = this.myControl.valueChanges
.pipe(
startWith({} as User),
map(user => user && typeof user === 'object' ? user.name : user),
map(name => name ? this.filter(name) : this.options.slice())
);
}
我在this.filter(name)上有以下错误:'string |类型的参数用户'不能分配给'string'类型的参数。
为什么?可以采取哪些措施来避免它?在此帖后添加:
我通过对filter的参数进行以下更改来纠正错误:
filter(name: string | User): User[] {
return this.options.filter(option =>
option.name.toLowerCase().indexOf(name.toLowerCase()) === 0);
}
但我不知道什么是字符串|用户意味着在此之后,name.toLowerCase()上存在一个问题,如字符串|用户没有方法toLowerCase()
感谢您的反馈!
答案 0 :(得分:0)
您的用户的用户类型不是字符串。问题在于你的
displayFn(user: User): string {
return user ? user.name : user.name;
}
您希望返回的值属于User类型,但是对于"!user"返回来自User类型而不是string的用户。 因此,您可以将函数的类型指定为字符串|用户或尝试始终返回一个字符串。