【问题标题】:Material 2 - autocomplete not showing options材料 2 - 自动完成不显示选项
【发布时间】:2017-08-02 10:26:06
【问题描述】:

我正在尝试在angular 中实现material-2md-autocomplete。它的工作方式是当用户开始输入时,它会调用http 来获取数据并显示在选项中。 我可以进行 http 调用,但由于某种原因,它不会在options 中显示。

HTML

<md-input-container>
  <input mdInput placeholder="Search drug" [mdAutocomplete]="auto" [formControl]="drug" showPanel="false">
</md-input-container>

<md-autocomplete #auto="mdAutocomplete" [displayWith]="displayFn">

  <md-option *ngFor="let drug of filteredDrugs | async" [value]="drug.drugname">
    {{ drug.drugname}}
  </md-option>
</md-autocomplete>

TS

export class DialogAutoComplete {
  drug: FormControl;
  drugList = [];
  filteredDrugs: any;

  constructor(public dialogRef: MdDialogRef<DialogAutoComplete>, private getData: GetData) {
    this.drug = new FormControl();
    //this.filteredDrugs = 
    this.filteredDrugs = this.drug.valueChanges.startWith(null)
      .map(drugname => {

        return Array.of(this.getDrugs(drugname)) || [{}];
      });


  }
  getDrugs(val: string) {
    console.log("filterdrugs is called ", val);
    return val ?
      // this.drugList.filter(option => option)
      this.getData.getDataForAutoComplete(val).subscribe(
        (response: Response) => { console.log(response); return response || []; },
        (err) => console.log(err)

      )
      : [{ drugname: "No Such drug found" }];
  }
  displayFn(drug) {
    console.log("displayfn => ", drug);
    return drug == null ? drug : drug.drugname;
  }
}

以下是http 调用的响应。

演示 plunker 具有不同的 api 调用但类似的响应和设置。 plunker

感谢您的帮助。

【问题讨论】:

  • Plunker 对诊断和解决问题非常有帮助:)
  • http 调用在本地环境中。它在 plunker 中不起作用,因为它需要https
  • @BhavikPatel 您可以创建一个模拟 json 文件并引发 http 调用。使用来自 post 的这个演示插件
  • 好的,谢谢,我试试
  • 添加了一个插件。谢谢

标签: angular angular-material2 md-autocomplete


【解决方案1】:

使filteredDrugs 成为一个可观察对象,它以您想要的格式从任何服务 (HttpService) 获取其数据。

https://blog.bouzekri.net/2016-05-15-angular2-rxjs-simple-paginated-list-with-search-field

你定义的异步 *ngFor="let drug of filteredDrugs | async" 有助于在运行时获取 filterDrugs 的值,因此 filteredDrugs 需要是一个 Observable。

有用的链接:AutoComplete tutorial

【讨论】:

  • 感谢您的意见。我确实尝试过,但没有成功。
  • 这里解释了相同的概念:medium.com/@nacimidjakirene/…
  • 链接对我有帮助。谢谢。
猜你喜欢
  • 2017-07-14
  • 2019-01-29
  • 1970-01-01
  • 2018-10-20
  • 2019-02-18
  • 1970-01-01
  • 2017-11-20
  • 1970-01-01
相关资源
最近更新 更多