【问题标题】:How to get value of multiple input fields in angular4?如何在angular4中获取多个输入字段的值?
【发布时间】:2018-07-13 13:42:31
【问题描述】:

我在 mat-table 中定义了输入字段。我想通过单击 Next 按钮访问 component.ts 文件中的这些值。我已经有一种单击按钮的方法,但想不出一种访问输入值的方法。我也尝试指定 name 属性,但每个输入标签都是相同的。

HTML 代码:

<ng-container matColumnDef="npm">
                  <mat-header-cell *matHeaderCellDef  fxFlex = "15" style="margin-left: 1%;padding-left: 1%;">NPM</mat-header-cell>
                  <mat-cell *matCellDef="let row" fxFlex = "15"> 
                      <span style ="white-space: nowrap">
                          <input decimal = "true" value= '{{this.selectedAccount.occupancy.npm}}'  style ="display:inline-block; width:55%" #npmValueEntered  required> 
                      </span>
                  </mat-cell>
</ng-container>


<button mat-button [disabled] = "stepTwoFormGroup.invalid || overPercentage || disabledButtons" (click)="submit(stepper)" >Next</button>

【问题讨论】:

标签: angular angular-material


【解决方案1】:

尚不清楚您需要如何访问这些值。但一个简单的解决方案是使用 ngModel 将输入绑定到数据,而不是从数据中初始化值:

<ng-container matColumnDef="npm">
    <mat-header-cell *matHeaderCellDef  fxFlex = "15" style="margin-left: 1%;padding-left: 1%;">NPM</mat-header-cell>
    <mat-cell *matCellDef="let row" fxFlex = "15"> 
        <span style ="white-space: nowrap">
            <input decimal = "true" [(ngModel)]='this.selectedAccount.occupancy.npm'  style ="display:inline-block; width:55%" #npmValueEntered  required> 
        </span>
    </mat-cell>
</ng-container>

然后您的submit 函数可以通过this.selectedAccount.occupancy.npm 访问该值。

但如果您需要,使用 cmets 中建议的表单可能会给您更好的控制。

【讨论】:

  • 如代码所示,UI 上会有多个输入字段。如何使用 [(ngModel)] 绑定多个值?如果我可以将这些值存储在 typescript 代码中的数组中,那就很容易了。
  • 我的代码示例向您展示了如何使用 ngModel 绑定值 - 它对一个字段/值的工作方式与对多个字段/值的工作方式相同。您可以绑定到如图所示的原始数据对象、数组或任何您想要的。您还可以使用模板或反应式表单。它们都是绑定和控制数据的不同方式。您还没有显示您打算如何处理这些值 - 换句话说,您的 next() 函数需要做什么?更多代码会有所帮助,但听起来您只需要阅读一些内容就可以熟悉 Angular 中的表单和数据绑定概念。
猜你喜欢
  • 1970-01-01
  • 2012-02-07
  • 2021-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多