【问题标题】:Angular 2+, specify input type attribute inside a ngFor created formAngular 2+,在 ngFor 创建的表单中指定输入类型属性
【发布时间】:2017-10-12 15:13:57
【问题描述】:

更新-----

我可以显示一个带有方法的日期选择器,将“日期”传递给输入类型。但是现在我想使用一个更好的组件,即 Angular Material Datepicker。

现在我的代码如下;我看不到 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>

原帖---

感谢 *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>

【问题讨论】:

  • 你不能在你的数据中指定它然后可以分配给输入的 [type] 属性,或者你总是可以创建一个方法来根据元返回正确的类型
  • 看起来不错,我正在尝试这个
  • 好吧,它似乎工作,问题是不是每个浏览器都支持“日期”输入字段。在这种情况下,我可以使用自定义日期选择器组件吗?
  • 当然,为什么不可以在输入之前放置一个 ngIf,如果它必须是日期,则呈现自定义日期选择器而不是输入框
  • 天哪,感觉有点白痴:) 我会试试的。谢谢

标签: forms angular ngfor


【解决方案1】:

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

【讨论】:

  • 你能发布 plunker url 吗?
  • 好的,我错过了一个组件导入,但奇怪的是 IDE 没有告诉我这件事。它是 MatNativeDateModule,除了 MatDatepickerModule
猜你喜欢
  • 1970-01-01
  • 2016-08-14
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 2018-09-22
  • 2016-04-05
  • 2017-01-29
相关资源
最近更新 更多