繁体   English   中英

在 angular 6 中保持 form.reset() 上的选择字段占位符

[英]Keep select field placeholder on form.reset() in angular 6

链接帮助我在选择框中使用占位符。 所以我的代码是

<form (ngSubmit)="onSubmit(form)" #form="ngForm" class="form-sample form-position">

<div class="form-group row">
  <label class="col-sm-3 col-form-label">Membership</label>
  <div class="col-sm-9">
    <select name="membership" [(ngModel)]="membership" class="form-control" required>
      <option [ngValue]="undefined" disabled selected hidden> Please select one option </option>

      <option>Free</option>
      <option>Professional</option>
    </select>
  </div>
</div>

 <div class="form-group row">
      <label class="col-sm-3 col-form-label">State</label>
      <div class="col-sm-9">
        <select [(ngModel)]="state" class="form-control" name="state" required=""
          placeholder="Select">
          <option [ngValue]="undefined" disabled selected hidden> Please select one option </option>
          <option *ngFor="let item of statesList">{{item}}</option>
        </select>
      </div>
    </div>

  <div class="text-center container-fluid form-group">
     <button [disabled]="!form.valid" type="submit" class="btn btn-primary btn-fw text-center">Submit</button>
     <button type="button" class="btn btn-secondary btn-fw" (click)="form.reset()">Clear</button>
  </div>
</form>

这是我代码的一小部分。 上面的代码工作得很好。 当页面加载选择字段Membership默认选项Please select one option被选中。

但问题是当我重置表单时, Please select one option的文本也会被清除。 但我希望此默认选项在表单重置后保持选中状态。 重置表单我使用form.reset()

form.reset()为基础模型设置null值。 由于您将undefined作为值分配给默认选项,因此它们不匹配。 要么提供用于清除表单的自定义逻辑并将模型值设置为undefined重置;

<button type="button" class="btn btn-secondary btn-fw" (click)="clearForm()">Clear</button>

并在您的 component.ts

clearForm() {
  this.membership = undefined;
  this.state = undefined;
}

或者

将相应模型的选项值和初始值更改为null

<option [ngValue]="null" disabled selected hidden> Please select one option </option>

并在您的 component.ts

membership = null;
state = null;

这是第二个演示https://stackblitz.com/edit/angular-ngvh9p

如果更改了select中的值,则需要在表单重置时将membership的值设置为undefined 我不知道form.reset()是做什么的,但它可能会将值设置为null

我有一个类似的问题。

在新选项卡中打开页面显示初始加载时的占位符/默认值,然后离开页面并返回,它是空白的。

我必须添加[ngValue = "null"]并将模型中的值最初设置为'null'

只有在那之后它才出现。

错误代码:

<select name="title" [(ngModel)]="model.title">
    <option selected disabled> PLACEHOLDER </option>
    <option *ngFor="let title of titles" [value]="title"> title </option>
</select>

在 component.ts 中,初始值设置为model.title = '' ,即 'undefined'。

修复代码是通过添加显式ngValue并将其设置为“null”:

<select name="title" [(ngModel)]="model.title">
    <option [ngValue]="null" selected disabled> PLACEHOLDER </option>
    <option *ngFor="let title of titles" [value]="title"> title </option>
</select>

并设置model.title = null的初始值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM