簡體   English   中英

物料2-自動完成不顯示選項

[英]Material 2 - autocomplete not showing options

我正在嘗試在angular實現material-2 md-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

感謝幫助。

使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需要有一個觀察的。

有用的鏈接: 自動完成教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM