[英]Resolving Typescript compiler messages for the runtime Javascript attributes
我有一段类似下面的代码:
<div class="authentication-validation-message-container">
<ng-container *ngIf="email.invalid && (email.dirty || email.touched)">
<div class="validation-error-message" *ngIf="email.errors.required">Email is required.</div>
<div class="validation-error-message" *ngIf="email.errors.email">Email is not in the valid format. Please use a valid
email.
</div>
</ng-container>
<ng-container *ngIf="pwd.invalid && (pwd.dirty || pwd.touched)">
<div class="validation-error-message" *ngIf="pwd.errors.required">Password is required.</div>
</ng-container>
<div class="validation-error-message" *ngIf="!verdict">{{errorMessage}}</div>
</div>
如果您使用的是Angular,则可以使用诸如email.errors.required
类的代码来检查输入中是否包含无效数据。 然而, .required
, .email
等JS的运行时间执行期间,所有来的,所以期间打字稿编译时是不知道。
当我查看IDE(使用Jetbrains Rider,btw)时,我看到了这些编译时警告,我想以TypeScript惯用的方式解决它们:
我已经尝试过(email.errors as any).required
但警告不会消失。 我相信as
现在推荐的铸造方式代替(<any> email.errors).required
。 好吧,他们两个都没有工作。 因此,如果不使用组件(角度概念)并进行修改(例如通过属性公开这些错误消息),您的建议是什么?
编辑:
这些是警告消息:
实际的问题是应该在那里的类型。 ngIf
构造期望有一个带boolean
结果的表达式,但是从实际状态来看,您的代码无法确保这一要求。 要使警告消失,您应该使用'?'
安全地导航 运算符或将表达式boolean
为boolean
类型。
例如,您可以执行以下操作:
<div class="validation-error-message" *ngIf="email?.errors.required">Email is required.</div>
<div class="validation-error-message" *ngIf="email?.errors.email">Email is not in the valid format. Please use a valid
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.