我正在用ControlGroup构建一个表单,并在其中加载一个类对象.然而,我有一半的时间遇到了标题中提到的错误.有些表单确实加载,有些则不加载.

我有一个这样的类文件:

export class User {
    id: number;
    email: string;
    sign_in_count: number;
    created_at: string;
    first_name: string;
    last_name: string;
    birth_date: Date;
    news_letter: boolean;
    fb_id: string;
    gender: boolean;
    phone: string;
    picture: any;
}

在我的类中加载UserDetaili控件:

export class UserDetailComponent implements OnInit {
    user: User;
    userDetailForm: ControlGroup;

    constructor(
        private form: FormBuilder,
        private _userService: UserService,
        private _router: Router,
        private params: RouteSegment
    ) { }
    ngOnInit() {
        this.user = this._userService.getUser();
        if (this.user === undefined) {
            this._userService.getSingleUser(this.params.getParam('id'))
                .subscribe(data => (this.user = data, this.setForm()));
        } else {
            this.setForm();
        }
    }

    setForm() {
        this.userDetailForm = this.form.group(this.user);
    }
}

在最后一行,我得到了下面的stacktrace错误:

browser_adapter.ts:78 TypeError: this.validator is not a function
    at Control.AbstractControl._runValidator (model.ts:146)
    at Control.AbstractControl.updateValueAndValidity (model.ts:128)
    at new Control (model.ts:282)
    at FormBuilder.control (form_builder.ts:32)
    at FormBuilder._createControl (form_builder.ts:66)
    at eval (form_builder.ts:50)
    at Function.StringMapWrapper.forEach (collection.ts:132)
    at FormBuilder._reduceControls (form_builder.ts:49)
    at FormBuilder.group (form_builder.ts:19)
    at UserDetailComponent.setForm (user-detail.component.ts:95)

推荐答案

当我以错误的方式在form builder中绑定一个值数组时,出现了这个错误.

What I did:

fb.group({items: [1, 2, 3, 4]})

How it should be:

fb.group({items: [[1, 2, 3, 4]]})

你必须把所有的东西都打包成一个数组,否则angular会认为[1, 2, 3, 4]form control definition而不是form control value.

Typescript相关问答推荐

创建一个通用上下文,允许正确推断其中的子项

Typescript:将内部函数参数推断为子对象键的类型

相同端点具有不同响应时的RTKQuery类型定义

将props传递给子组件并有条件地呈现它''

如何使用Zod使一个基于其他字段值的字段为必填字段?

返回具有递归属性的泛型类型的泛型函数

如何调整对象 struct 复杂的脚本函数的泛型类型?

如何在Type脚本中动态扩展函数的参数类型?

Fp-ts使用任务的最佳方法包装选项

确保对象列表在编译时在类型脚本中具有唯一键

有没有办法防止类型交集绕过联合类型限制?

TYPE FOR ARRAY,其中每个泛型元素是单独的键类型对,然后在该数组上循环

如何键入派生类的实例方法,以便它调用另一个实例方法?

react 路由不响应参数

使用强制转换编写打字函数的惯用方法

如何使用警告实现`RecursiveReadonly<;T>;`,如果`T`是原语,则返回`T`而不是`RecursiveReadonly<;T>;`

定义一个只允许来自另一个类型的特定字符串文字的类型的最佳方式

使用受保护的路由和入门来响应路由

错误:仅允许在‘使用服务器’文件中导出异步函数

对象可能未定义(通用)