Angular - 错误:密码更改验证器中的对象可能为空
Posted
技术标签:
【中文标题】Angular - 错误:密码更改验证器中的对象可能为空【英文标题】:Angular - Error: Object is possibly null in password change validator 【发布时间】:2021-09-16 08:02:21 【问题描述】:我在 Angular-12 中有这个密码更改验证器:
import AbstractControl, ValidationErrors from '@angular/forms';
export class OldPwdValidators
static shouldBe1234(control: AbstractControl) : Promise<ValidationErrors | null>
return new Promise((resolve,reject) =>
if(control.value !== '1234')
resolve( shouldBe1234: true );
else
resolve(null);
);
static matchPwds(control: AbstractControl)
let newPwd2 = control.get('newPwd');
let confirmPwd2 = control.get('confirmPwd');
if(newPwd2.value !== confirmPwd2.value)
return pwdsDontMatch: true ;
return null;
我收到了这个错误:
对象可能为空
这两行高亮显示:
newPwd2.value
和
确认Pwd2.value
【问题讨论】:
这能回答你的问题吗? Typescript, how to pass "Object is possibly null" error? 你登录了这个control.get('newPwd')
【参考方案1】:
根据AbstractControl get(),
返回:AbstractControl |空
因此newPwd2
和confirmPwd2
可能是null
。
解决方案 1
如果您确认newPwd
和confirmPwd
控件都存在(保证),您可以将其转换为AbstractControl
。
let newPwd2: AbstractControl = control.get('newPwd') as AbstractControl;
let confirmPwd2: AbstractControl = control.get('confirmPwd') as AbstractControl;
Solution 1 on StackBlitz
解决方案 2
在访问其属性之前检查newPwd
和confirmPwd
不得为null
和undefined
。
static matchPwds(control: AbstractControl)
let newPwd2 = control.get('newPwd');
let confirmPwd2 = control.get('confirmPwd');
if (newPwd2 && confirmPwd2)
if (newPwd2.value !== confirmPwd2.value)
return pwdsDontMatch: true ;
return null;
Solution 2 on StackBlitz
【讨论】:
以上是关于Angular - 错误:密码更改验证器中的对象可能为空的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Angular 2 上实现 ngOnChanges 以进行输入验证,而不触发“检查后表达式已更改。”错误