为什么 FormRecord 不允许使用对象作为第一个参数?

伊戈尔·诺沃萨德

Angular 14 添加了一个名为 FormRecord 的新类,它允许创建比 FormGroup 更动态的表单控件。文档有一个这样的例子

FormRecord 接受一个通用参数,它描述了它包含的控件的类型。

let numbers = new FormRecord({bill: '415-123-456'});
numbers.addControl('bob', '415-234-567');
numbers.removeControl('bill');

但是当我在我的代码中使用那个例子时,我得到了一个错误

let numbers = new FormRecord({bill: '415-123-456'}); // TS2322: Type 'string' is not assignable to type 'AbstractControl<never, never>'. 
numbers.addControl('bob', '415-234-567'); // TS2345: Argument of type 'string' is not assignable to parameter of type 'AbstractControl '.

当涉及到 package.json 时,它看起来像这样

  "dependencies": {
    "@angular/animations": "^14.0.0",
    "@angular/common": "^14.0.0",
    "@angular/compiler": "^14.0.0",
    "@angular/core": "^14.0.0",
    "@angular/forms": "^14.0.0",
    (...)
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^14.0.0",
    "@angular/cli": "~14.0.0",
    "@angular/compiler-cli": "^14.0.0",
    (...)
    "typescript": "~4.7.2"
  }

昆汀

我认为这是一个在发布期间没有被发现的文档错误。

请参阅文档顶部

extends FormGroup<{[key: string]: TControl; }>

这篇博文

languages: new FormRecord({
  english: new FormControl(true, { nonNullable: true }),
  french: new FormControl(false, { nonNullable: true })
});

您传递给的对象的值new FormRecord应该是FormControl对象,而不是字符串。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么不允许接口作为注释成员?

为什么x86通常不允许目标寄存器不是第一个源寄存器?

为什么建议使用ctx作为第一个参数?

为什么不允许覆盖方法中的参数类型不同(一个是原始类型,另一个是包装器)?

为什么url_for()将“ static”作为第一个参数使用?没有static()

为什么不允许将右值引用绑定到非const引用,但是却可以在一个对象上调用非const成员函数

在Python中创建namedtuple时,为什么必须提供typename作为第一个参数

为什么不允许将非静态成员的地址作为模板非类型参数?

为什么Redux示例将空对象作为第一个Object.assign()参数传递?

为什么不允许仅在一个引用限定符上进行重载?

Matlab-为什么有时xslread不允许使用数字作为工作表参数?

为什么不允许auto作为函数参数?

为什么在C中不允许在数组的第一个元素之前指向一个?

为什么C ++不允许将参数作为默认参数?

为什么lambda参数不允许使用auto?

为什么准备好的语句不允许字段和表名作为参数?

为什么不允许将变量声明作为参数,而将函数声明作为参数?

为什么Blob构造函数只将数组作为第一个参数?

为什么fputs()需要常量作为第一个参数而不是fputc()?

为什么线性回归不接受系列数据作为第一个参数?

为什么.fit()需要2D数组作为第一个参数?

为什么不允许将constexpr局部变量作为默认函数参数?

为什么不允许double作为非类型模板参数?

为什么str.endswith不允许“ suffix”参数作为列表?

为什么在进程句柄对象上对 kernel32.TerminateProcess 的第一个参数使用整数转换?

为什么 bind.apply(fn,arguments) 在传递参数对象时省略第一个参数?

我得到一个非法引用和一个不允许的类型名称,为什么?

为什么 class.getConstructor(parameters) 不允许子对象作为参数?

Collections.sort() 可以将 treeSet 作为第一个参数吗?如果不是为什么?