繁体   English   中英

为运行时Javascript属性解析Typescript编译器消息

[英]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结果的表达式,但是从实际状态来看,您的代码无法确保这一要求。 要使警告消失,您应该使用'?'安全地导航 运算符或将表达式booleanboolean类型。

例如,您可以执行以下操作:

<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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM