我有以下代码:
export function validaterUserContributors(
propList: FormPropList<IdentityUserDto>
) {
const firstNameNode = propList.dropByValue(
'AbpIdentity::DisplayName:Name',
(prop, displayName) => prop.displayName === displayName
);
const emailControlValue = firstNameNode?.value;
if (emailControlValue) {
const emailControl = new FormControl(
emailControlValue,
Validators.required
);
propList.add(emailControl.value);
}
正如您所看到的,我为删除的第一个表单控件创建了一个新的表单控件,并添加了一个验证器,因此我想在最后一行propList.add(emailControl.value);
中添加它
但这给我带来了以下错误:
“FormProp”类型的参数|“null”不能分配给“FormProp”类型的参数。类型“null”不能分配给类型“FormProp”
我不知道为什么如果我使用if语句来控制if (emailControlValue) {}
,它可能为null
知道我哪里做错了吗
1条答案
按热度按时间2uluyalo1#
问题似乎是在访问
firstNameNode
的value
属性时使用可选链接运算符(?)
的方式即使在创建新的
FormControl
之前检查emailControlValue
是否正确,TypeScript仍然会识别出firstNameNode
可能是null
或undefined
,因为使用了?
要解决此问题,您可以删除
?
并使用非空Assert运算符(!)
,如下所示:或者,你可以使用一个nullish合并运算符
(??)
来提供一个默认值,以防firstNameNode为null或undefined: