Angular5生产构建报错:Argument of type '"email"'无法赋值给string[]类型参数
解决Angular 5生产构建时的类型不匹配错误
嗨,我来帮你搞定这个问题!你遇到的这个报错,本质是Angular 5在生产构建模式下的严格类型检查触发的——开发构建时类型校验比较宽松,所以能正常跑,但生产构建(ng build --prod)就会揪出这个类型不匹配的问题。
问题根源
你代码里的form.hasError('email', 'email')这部分,在Angular 5的类型定义中,FormGroup.hasError()方法的第二个参数(用来指定要检查的控件路径)要求是字符串数组类型,但你直接传了单个字符串'email',这就触发了类型不匹配的报错:Argument of type '"email"' is not assignable to parameter of type 'string[]'。
修复方案
只需要把第二个参数改成数组形式就行,把单个字符串'email'换成包含它的数组['email']。修改后的代码如下:
<mat-form-field> <input matInput placeholder="Email" formControlName="email" required> <mat-error *ngIf="form.hasError('email', ['email']) && !form.hasError('required', ['email'])"> Please enter a valid email address </mat-error> </mat-form-field>
额外说明
生产构建的--prod参数默认开启了AOT编译和严格类型校验,这些校验会比开发模式更严苛,能帮你提前发现潜在的类型问题。开发模式下为了提升开发效率,放宽了部分检查,所以才会出现两种构建结果不一致的情况。
内容的提问来源于stack exchange,提问作者Maihan Nijat
相关产品推荐
相关产品推荐

