【问题标题】:Nested Input Search in Table in Angular Reactive FormsAngular 响应式表格中的嵌套输入搜索
【发布时间】:2020-09-10 22:07:43
【问题描述】:

我有一个非常简单的问题,我无法解决。我只需要表格中的自动完成输入即可运行。

请参阅此堆栈闪电战link

onSelectProduct(val: string) {
    this.filteredOptions = this.form.get("products").valueChanges.pipe(
      startWith(""),
      map(value => this._filter(value))
    );
  }

  private _filter(value: string): string[] {
    console.log(value);
    const filterValue = value.toLowerCase();
    return this.options.filter(
      option => option.toLowerCase().indexOf(filterValue) === 0
    );
  }

【问题讨论】:

  • 你能澄清你的问题吗?我不知道你想做什么。
  • @bjdose。只需修复表格内的自动完成功能

标签: angular angular-material angular7 angular-reactive-forms angular-forms


【解决方案1】:

为了修复自动完成,您需要初始化名为 filteredOptions 的变量。

在构造函数上初始化该变量。并将您的值写入过滤器函数的输入中。

constructor() {
 // .. code omitted
 this.initFilteredOptionsByIndex(0);
}

initFilteredOptionsByIndex(index: number) {
  this.filteredOptions = this.form.get("products").valueChanges.pipe(
    startWith(""),
    map(value => this._filter(value, index))
  );
}

onFocus(index: number) {
 // I use input focus to get each row index
 this.initFilteredOptionsByIndex(index);
}

private _filter(value: any, index: number): string[] {
  if (!value) {
    return [];
  }

  const filterValue = value[index].product_id.toLowerCase();

  return this.options.filter(option => option.toLowerCase().indexOf(filterValue) === 0);
}

解决方案可用here

【讨论】:

  • 这不起作用。请编辑我的 stackblitz 看看它是如何工作的
  • bjdose。我试过但它不起作用。尝试在自动完成中输入一些内容,但它不起作用。它不会自动完成
  • 我认为您的浏览器或类似问题有问题,因为我点击了输入并显示了自动完成功能。尝试检查控制台或使用其他浏览器。
  • 尝试输入单词“two”,它应该只出现“two”。输入“二”时,仍然出现“一”和“三”
  • 你让它在第一行工作。但是在随后的行上它不起作用,因为你刚刚做了 value[0].product_id。它只访问第一行。
猜你喜欢
  • 1970-01-01
  • 2018-06-22
  • 2021-11-21
  • 1970-01-01
  • 1970-01-01
  • 2018-07-14
  • 2020-01-30
  • 1970-01-01
  • 2019-11-02
相关资源
最近更新 更多