angular formBuilder.group controls with property of array type, not work.

watbbzwu  于 6个月前  发布在  Angular
关注(0)|答案(3)|浏览(50)

哪个@angular/*包是bug的来源?

forms

这是一次回归吗?

是的

描述

当尝试使用表单构建器声明具有数组属性的表单时,它不起作用,它将其识别为null而不是Array。

如果这是期望的行为,应该在文档中添加。这样我们就不会浪费很多时间去理解问题是什么以及为什么代码出错了。谢谢!

请提供一个最小复现错误的链接

https://stackblitz.com/edit/angular-m2rwrv?file=src/main.ts

请提供您看到的异常或错误

Error in src/main.ts (38:19)
Object is possibly 'null'.

请提供您发现此bug的环境(运行ng version)

Angular CLI: 15.2.4
Node: 14.21.1
Package Manager: npm 6.14.17
OS: win32 x64

Angular: 15.2.4
... animations, cli, common, compiler, compiler-cli, core, forms
... localize, platform-browser, platform-browser-dynamic, router

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1502.4
@angular-devkit/build-angular   15.2.4
@angular-devkit/core            15.2.4
@angular-devkit/schematics      15.2.4
@angular/cdk                    15.2.3
@angular/material               15.2.3
@schematics/angular             15.2.4
rxjs                            7.8.0
typescript                      4.9.5

还有其他信息吗?

  • 无响应*
cnh2zyt3

cnh2zyt31#

你好,
这个问题只在传递一个 Array<any> 到控制配置元组时出现。根本原因可以在 ɵElement 的定义中找到:
angular/packages/forms/src/form_builder.ts
第92行:| | [T]extends[PermissiveControlConfig] ? FormControl<Exclude<U,ValidatorConfig|PermissiveAbstractControlOptions>|N> : |
当传递一个 Array<any> 作为第一个参数,并且传递一个数组类型作为第二个参数时,Exclude 不起作用。这是因为 ValidatorConfig
angular/packages/forms/src/form_builder.ts
第28行:| | typeValidatorConfig=ValidatorFn|AsyncValidatorFn|ValidatorFn[]|AsyncValidatorFn[]; |
Playground demo
对于你来说,显而易见的修复方法是为你的数据类型指定类型或者使用 Array<unknown>,它也可以解决这个问题。
编辑:我在控制配置中为这个特定用例提出了一个 Array<any> 的修复方案。

voase2hg

voase2hg2#

谢谢!
它起作用了。

sr4lhrrt

sr4lhrrt3#

这个问题由于不活跃而被自动锁定。
如果您遇到类似的或相关的问题,请提交一个新的问题。
阅读更多关于我们的自动对话锁定策略的信息。

  • 此操作已被机器人自动执行。*

相关问题