Angular 使用传入的参数作为过滤器中的属性,角度

Angular 使用传入的参数作为过滤器中的属性,角度,angular,typescript,filter,include,subscribe,Angular,Typescript,Filter,Include,Subscribe,我有一个搜索过滤器,可以搜索不同的参数,如标题、描述、价格。 我的过滤器工作正常,但我希望参数根据传入的filterBy 就像这样: filterItems(filterBy: string, filterText: string): Subscription { return this.http .get<{ items: Items[] }>(this.API) .pipe(take(1)) .subscribe((items) =&

我有一个搜索过滤器,可以搜索不同的参数,如标题、描述、价格。 我的过滤器工作正常,但我希望参数根据传入的
filterBy

就像这样:

 filterItems(filterBy: string, filterText: string): Subscription {
    return this.http
      .get<{ items: Items[] }>(this.API)
      .pipe(take(1))
      .subscribe((items) => {
        this.itemsArray = items.items;
        this.itemsArray = this.itemsArray.filter((item) => {
          return item.title.includes(`${filterText}`);
        });
      });
  }
项目界面:

export interface Items {
  title: string;
  description: string;
  price: string;
  email: string;
  image: string;
}

我不得不在界面上添加一个索引器,这对我来说是一个新概念。因此,这起了作用:

export type Items = {
  [filterBy: string]: string;
  title: string;
  description: string;
  price: string;
  email: string;
  image: string;
};

为什么这不起作用?你得到了什么?如果你做一个console.log(filterBy==“title”)你得到了真的吗?@Moshezauros我得到了这个:元素隐式地有一个“any”类型,因为“string”类型的表达式不能用于索引类型“Items”。在“Items”类型上未找到具有“string”类型参数的索引签名。我将在问题中显示更多的代码以进行澄清things@bjlasc01是的,先生,的确如此
export interface Items {
  title: string;
  description: string;
  price: string;
  email: string;
  image: string;
}
export type Items = {
  [filterBy: string]: string;
  title: string;
  description: string;
  price: string;
  email: string;
  image: string;
};