类型'字符串|的参数用户'不能分配给'string'类型的参数

问题描述 投票:0回答:1

在下面的代码中,出现在角度材料示例中: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()

感谢您的反馈!

javascript typescript angular-material
1个回答
0
投票

您的用户的类型为User,而不是字符串。问题出在你的身上

displayFn(user: User): string {
    return user ? user.name : user.name;
  }

您希望返回的值为User类型,但在“!user”的情况下,您返回的用户类型为User而不是string。因此,您可以将函数的类型指定为字符串|用户或尝试始终返回一个字符串。

© www.soinside.com 2019 - 2024. All rights reserved.