簡體   English   中英

按名稱選擇並在 angular 4 材料應用程序的 md-autocomplete 輸入中獲取 id

[英]Choose by name et get the id in md-autocomplete input in angular 4 material application

我有一個帶有材料設計的 angular 4 應用程序。 在這個應用程序中,我有一個帶有自動完成字段的表單。

這是我的 html 代碼:

<div class="form-group">
  <md-input-container>
    <input mdInput type="text" mdInput [mdAutocomplete]="project" [formControl]="projectCtrl" placeholder="Choose a project" [(ngModel)]="selectProjectForNewCollab" name="selectProjectForNewCollab">
  </md-input-container>
  <md-autocomplete #project="mdAutocomplete">
    <md-option *ngFor="let project of filteredProjects | async" [value]="project.name">
      {{ project.name }}
    </md-option>
  </md-autocomplete>
</div>

還有我的 ts 代碼:

console.log("project = " + this.selectProjectForNewCollab);

所以,我有 3 個字段的projects{id: "1", name: "test", photo: "test"} 我想按名稱選擇一個項目,但要取回 id 作為回報。 實際上,我已經選擇了名字,但最后我得到了名字。 如果我更改[value]="project.id" ,我會得到 id 但它是顯示在輸入中的 id 。

那么,您知道如何獲取 id 但按名稱選擇並在輸入中顯示名稱嗎?

您需要對md-autocomplete進行單獨的controldisplay md-autocomplete提供displayWith api,可用於選擇要在下拉/選定字段中顯示的字段。

對於您的代碼,它將類似於以下內容:

html:

<md-input-container>
  <input mdInput placeholder="Project" 
         [(ngModel)]="selectProjectForNewCollab" (ngModelChange)="setProject(project)"
         [mdAutocomplete]="project" [formControl]="stateCtrl">
</md-input-container>

<md-autocomplete #project="mdAutocomplete" [displayWith]="displayFn">
  <md-option *ngFor="let project of filteredStates | async" [value]="project" >
    {{ project.name }}
  </md-option>
</md-autocomplete>

在 component.ts 中,必須添加displanFn

displayFn(project): string {
    console.log(project);
      return project ? project.name : project;
}

請注意,在HTML中,結合是現在整個對象[value]="project" ,這使得顯示一個屬性,但得到的幕后對象的所有屬性,從那里,你可以挑選的id的所選項目。

Plunker 演示

暫無
暫無

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

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