加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

角度2 ngControl的最小长度误差验证器问题

发布时间:2020-12-17 17:50:36 所属栏目:安全 来源:网络整理
导读:我有以下角度2形式: form (ngSubmit)="updateFirstName()" #firstNameForm="ngForm" novalidate div class="form-group" ng-class="getCssClasses(formCtrl,formCtrl.firstName)" div class="input-group" input type="text" ngControl="firstName" #firstN
我有以下角度2形式:

<form (ngSubmit)="updateFirstName()" #firstNameForm="ngForm" novalidate>
    <div class="form-group" ng-class="getCssClasses(formCtrl,formCtrl.firstName)">
        <div class="input-group">
            <input type="text"
                   ngControl="firstName"
                   #firstName="ngForm"
                   required
                   minlength="2"
                   maxlength="35"
                   pattern_="FIRST_NAME_PATTERN"
                   [ngModel]="currentUserAccount?.firstName"
                   (ngModelChange)="currentUserAccount ? currentUserAccount.firstName = $event : null"
                   placeholder="{{'FIRST_NAME_FORM.NEW_FIRST_NAME'| translate }}"
                   class="form-control"/>
        </div>

        <div [hidden]="firstName.valid">
            <div *ngIf="firstName.errors.minlength" class="control-label">{{'FIRST_NAME_FORM.MIN_LENGTH'| translate}}</div>
        </div>
    </div>
    <div class="form-group">
        <button type="submit" class="btn btn-primary pull-right" [disabled]="buttonDisabled">{{'FIRST_NAME_FORM.SUBMIT'| translate}}</button>
        <a [routerLink]="['/dashboard/useraccount']" class="btn btn-link pull-right text-right">{{'FORM_CANCEL' | translate}}</a>
    </div>
</form>

但是,当我在浏览器中加载表单时出现以下错误,似乎错误为空:

TypeError: Cannot read property 'minlength' of null

我在这里弄错了什么?

模板中minlength属性的声明性使用是不够的?

是否有另一种方式来声明minlength验证器而不是以编程方式声明

this.name = new Control('',Validators.minLength(4));

解决方法

我遇到了同样的问题,即TypeError:无法读取null的属性’minlength’.对我来说,@ yurzui提出的解决方案解决了这个问题.我在这里添加它作为答案(正如@günter-z?chbauer所建议的那样),以便其他人(可能不会阅读评论)可以轻松找到它.

问题:

在定义错误之前,可以访问minlength属性:

<div *ngIf="firstName.errors.minlength">
    Too short
</div>

解:

使用 ?运算符,以确保在访问其minglength属性之前定义错误:

<div *ngIf="firstName.errors?.minlength">
    Too short
</div>

替代方案:

将div包装在另一个div中,检查是否定义了错误:

<div *ngIf="firstName.errors">
    <div *ngIf="firstName.errors.minlength">
        Too short
    </div> 
</div>

请注意,两个解决方案都假定已定义firstName.

PS:对于任何需要它的人来说,同样适用于errors.maxlength!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读