Angular 2+,在ngFor中创建的表单中指定输入类型属性

问题描述:

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

确保你的功能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