【问题标题】:Angular 4 Forms Validation - browser crashes when exporting ngModelAngular 4 Forms Validation - 导出 ngModel 时浏览器崩溃
【发布时间】:2018-04-16 18:30:57
【问题描述】:

我有一个简单的输入控件,我想使用 Angular 表单验证来验证,例如

<form>
<ion-input type="tel" id="phoneNumber" name="phoneNumber" required [(ngModel)]="phoneNumber" maxlength="10" minlength="10"
  placeholder="Touch here to enter a phone number" class="form-control">
</ion-input>
<p *ngIf="!phoneNumber.pristine && phoneNumber.errors.required" style="color:red;">
  * Phone number is required.
</p>
<button ion-button block large full (ngSubmit)="placeOrder()">Place order</button>
</form>

我正在尝试遵循 Angular 的模板驱动表单文档:https://angular.io/guide/forms

我遇到的问题是,一旦浏览器点击页面,浏览器就会挂起,唯一的出路是结束浏览器进程。一个 CPU 内核将达到峰值,内存将在一分钟内不断增加到 1GB 以上。 这是一个带有 Angular 4 的 Ionic 3 应用程序。我已将 FormsModule 添加到我的 app.module.ts 文件中。

任何想法为什么会发生这种情况?

我发现,当我删除 *ngIf 中的任何一个条件时,问题都不会发生(尽管那时显然没有验证)。

【问题讨论】:

    标签: angular ionic3 angular4-forms


    【解决方案1】:

    使用 ngModel 将您的输入绑定到组件的属性 phoneNumber。因此,您在该输入中输入的任何内容都将成为 phoneNumber 的值。你输入的是一个字符串。所以 phoneNumber 是一个字符串。

    字符串没有原始或错误属性。所以phoneNumber.pristine 没有意义。这些是由 ngModel 指令创建的 FormControl 对象的属性,其中包含输入的状态。要访问这个 FormControl 对象(通过 ngModel 指令),您需要在模板中将该指令作为变量公开:

    <ion-input type="tel" id="phoneNumber" name="phoneNumber" required 
               [(ngModel)]="phoneNumber" #phoneNumberControl="ngModel" 
               maxlength="10" minlength="10"
               placeholder="Touch here to enter a phone number" class="form-control">
    </ion-input>
    <p *ngIf="!phoneNumberControl.pristine && phoneNumberControl.errors.required" style="color:red;">
      * Phone number is required.
    </p>
    

    【讨论】:

    • 验证现在适用于我的代码,但我发现只要在控件中输入 10 位数字,浏览器就会挂起并变得无响应,并且必须终止进程。
    猜你喜欢
    • 1970-01-01
    • 2014-05-15
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多