Edu*_*léh 6 metadata typescript angular-forms angular5
我目前正在尝试扩展Angular5的FormGroup类型,以实现一个自定义方法,以接收模型状态错误并将其显示到另一个自定义组件中。
不幸的是,我收到的信息不那么丰富:
Error: ServerValidatedForm/src/platform/svalidated/group.component.ts:30:1: Error encountered in metadata generated for exported symbol 'SVFormGroup':
ServerValidatedForm/src/platform/svalidated/group.component.ts:33:22: Metadata collected contains an error that will be reported at runtime: Expression form not supported.
我怀疑TypeScripting本身缺少某些东西。值得高兴的是,我已经清理了node_modules,从项目中删除了所有元数据,然后再次进行了编译,每次遇到相同的错误时,都将重新进行编译。
我正在使用:
"@angular/animations": "5.0.1",
"@angular/cli": "^1.5.0",
"@angular/common": "5.0.1",
"@angular/compiler": "^5.0.1",
"@angular/compiler-cli": "^5.0.1",
"@angular/core": "5.0.1",
"@angular/forms": "^5.0.1"
重要的代码在这里,任何帮助将是有帮助的:
import { Injectable } from "@angular/core";
import { FormGroup } from "@angular/forms";
import { AbstractControlOptions } from "@angular/forms/src/model";
@Injectable()
export class SVFormGroup extends FormGroup {
constructor(
controls: {[key: string]: any},
validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null,
asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null) {
super(controls, validatorOrOpts, asyncValidator);
}
setFromModelState(response: any, form: SVFormGroup) {
if(response.error && response.error.ModelState){
let validationErrorDictionary = response.error.ModelState;
for (var fieldName in validationErrorDictionary) {
if (validationErrorDictionary.hasOwnProperty(fieldName)) {
if (form.controls[fieldName]) {
form.controls[fieldName].setErrors(validationErrorDictionary[fieldName]);
} else {
this.setErrors(Object.assign(this.errors, validationErrorDictionary[fieldName]));
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
}}`
完整的代码可以在以下位置找到: https://github.com/eduelias/servervalidatedform
| 归档时间: |
|
| 查看次数: |
1931 次 |
| 最近记录: |