2017-10-12 34 views
0

UPDATE -----Angular 2+,在ngFor中創建的表單中指定輸入類型屬性

我可以用一個方法顯示一個datepicker,將「date」傳遞給輸入類型。但是現在我想要使用更好的組件,即Angular Material Datepicker。

現在我的代碼如下;我看不到日期選擇器標籤,我跟着零件導向使用它......但我只有一個空場...

<form class="form-inline"> 
    <div class="form-group" *ngFor="let meta of state.metaById; let i = index" style="margin: 5px"> 
     <label>{{meta.nome}}</label> 
     <mat-form-field *ngIf="indovinaTipo(meta.nome)=='date'"> 
     <input matInput [matDatepicker]="picker" placeholder="Seleziona una data"> 
     <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle> 
     <mat-datepicker #picker></mat-datepicker> 
     </mat-form-field> 
     <input type="text" class="form-control" #nome (input)="inputInArray(nome.value, i)"> 
    </div> 
    <button>...<button> 
</form> 

原來的職位---

我已經產生了DINAMIC表單,這要感謝* ngFor。它可以工作,但我需要爲for的某些迭代指定不同的輸入類型。

可能嗎?

下面是代碼

<form class="form-inline"> 
    <div class="form-group" *ngFor="let meta of state.metaById; let i = index" style="margin: 5px"> 
     <label>{{meta.nome}}</label> 
     <input type="text" class="form-control" #nome (input)="inputInArray(nome.value, i)"> 
    </div> 
    <button type="submit" class="btn btn-primary" 
      (click)="doClick()">invia 
    </button> 
    </form> 
+0

不能指定它在你的數據,然後可以分配給[type]屬性的輸入,或者你總是可以創建一個方法來返回正確的類型根據元 – JayDeeEss

+0

似乎是正確的,我試着這 – Fjordo

+0

好吧,它似乎工作,問題是每個瀏覽器不支持「日期」輸入字段。有沒有一種方法可以在這種情況下使用自定義的日期選擇器組件? – Fjordo

回答

0

確保你的功能indovinaTipo(meta.nome)是當你想渲染日期選擇器返回日期的正確值,我曾嘗試在plunker下面的代碼和它工作得很好,我不知道你的數據結構,只是把模擬值測試

state = [ 
     {nome: 'a'} 
     {nome: 'date'} 
     ] 



<form class="form-inline"> 
    <div class="form-group" *ngFor="let meta of state; let i = index" style="margin: 5px"> 
     <label>{{meta.nome}}</label> 

     <mat-form-field *ngIf="meta.nome==='date'"> 
     <input matInput [matDatepicker]="picker" placeholder="Choose a date"> 
    <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle> 
    <mat-datepicker #picker></mat-datepicker> 
     </mat-form-field> 

    <input *ngIf="meta.nome!='date'" type="text" class="form-control" #nome (input)="inputInArray(nome.value, i)"> 
    </div> 
</form> 

Plunker

+0

可以請你發佈plunker網址嗎? – Fjordo

+0

好的,我錯過了一個組件導入,但奇怪的是IDE沒有告訴我這個。除了MatDatepickerModule,它還是MatNativeDateModule – Fjordo