gpt4 book ai didi

typescript - 如何正确扩展FormGroup

转载 作者:搜寻专家 更新时间:2023-10-30 20:53:09 25 4
gpt4 key购买 nike

我目前正在尝试扩展 Angular5 的 FormGroup 类型以实现自定义方法来接收模型状态错误并将它们显示到另一个自定义组件中。

不幸的是,我收到了一个信息量不大的错误:
错误:ServerValidatedForm/src/platform/svalidated/group.component.ts:30:1:在为导出符号“SVFormGroup”生成的元数据中遇到错误:
ServerValidatedForm/src/platform/svalidated/group.component.ts:33:22:收集到的元数据包含将在运行时报告的错误:不支持表达式形式。

我怀疑我在 TypeScripting 本身上遗漏了一些东西。很高兴注意到我已经清理了 node_modules,从项目中删除了所有元数据并再次转译,每次我遇到同样的错误。

我正在使用:
"@angular/animations": "5.0.1",
"@angular/cli": "^1.5.0",
"@angular/common": "5.0.1",
"@angular/编译器": "^5.0.1",
"@angular/compiler-cli": "^5.0.1",
"@angular/core": "5.0.1",
"@angular/forms": "^5.0.1"

重要的代码在这里,任何帮助都会有帮助:

从“@angular/core”导入{Injectable};
从“@angular/forms”导入{FormGroup};
从 "@angular/forms/src/model"导入 { AbstractControlOptions };

@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]));
}
}
}
}

}}`

完整的代码可以在:https://github.com/eduelias/servervalidatedform

最佳答案

最后,问题是我错误地注册了服务。而不是在 App.module 而不是 App.components 上注册它 - 在提供者内部。我一更改它,问题就消失了。

关于typescript - 如何正确扩展FormGroup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47401819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com