Ril*_*hes 2 angular-ng-if angular-validation angular
我正在尝试在表单组中写入表单控件特定的验证错误消息。我在网上找到了几个教程和示例(例如这个),概述了一个看似简单的 *ngIf div,如果在控件上检测到错误,则显示错误消息。
问题是,当我尝试这样做时,我收到这个奇怪的错误
NG5002: Parser Error: Conditional expression port?.errors?['required'] requires all 3 expressions at the end of the expression
我在此页面上还有其他几个可以正常工作的 *ngIf 条件。这是我的相关代码
<form-field labelText="Port" [hasError]="port?.invalid && (port?.dirty || key?.touched)" [isRequired]="true">
<input id="port" formControlName="port" type="password">
<ul *ngIf="port?.invalid && (port?.touched || key?.dirty)">
<li *ngIf="port?.errors?['required']">Port is Required</li>
<li *ngIf="port?.errors?['pattern']">Invalid Port Number</li>
</ul>
</form-field>
Run Code Online (Sandbox Code Playgroud)
ngOnInit() {
this.store.dispatch(SettingsActions.enterMaintenance());
this.detailsForm = new FormGroup({
id: new FormControl(''),
name: new FormControl('', Validators.required),
productName: new FormControl('', Validators.required),
number: new FormControl('', Validators.required),
isSamlAuthRequired: new FormControl(Boolean),
iAdapterSetting: new FormGroup({
server: new FormControl('', Validators.required),
port: new FormControl('', [Validators.required, Validators.pattern(this.regexValidPort)]),
key: new FormControl('', Validators.required),
headerVersion: new FormControl('', Validators.required),
iAdapterInstitutionId: new FormControl('', Validators.required),
isSSL: new FormControl(Boolean),
tlsSecurityStrength: new FormControl(''),
}),
});
this.setValue();
}
get port() {
return this.detailsForm.get('iAdapterSetting.port');
}
Run Code Online (Sandbox Code Playgroud)
我尝试添加像这样的内联条件替代。
<form-field labelText="Port" [hasError]="port?.invalid && (port?.dirty || port?.touched)">
<input id="Port" formControlName="port" type="text">
<ul *ngIf="port?.invalid && (port?.touched || port?.dirty)" class="rui-form-validation-errors">
<li *ngIf="port?.errors?['required']: false">Port is Required</li>
<li *ngIf="port?.errors?['pattern'] : false">Invalid Port Number</li>
</ul>
</form-field>
Run Code Online (Sandbox Code Playgroud)
这实际上解决了构建错误,但这似乎不正确,并且根据我能找到的互联网上的每个示例,这应该是不必要的。最重要的是,它们仍然一起被评估为真实。钥匙好像没什么区别。如果其中一个条件触发,则两条消息都会显示,但这不是我需要的行为。
表达式port?.errors?['required']在 Typescript 中不是有效语法,因为属性检查运算符.?不仅仅是?. 您无法以这种方式访问可选属性。有效语法是port?.errors?.['required'].
| 归档时间: |
|
| 查看次数: |
1022 次 |
| 最近记录: |