财产';我的表格';没有初始值设定项,并且未在构造函数中明确指定 从'@angular/core'导入{Component,HostListener,OnInit}; 从“@angular/forms”导入{FormBuilder、FormGroup、Validators}; @组成部分({ 选择器:“应用程序联系人表单”, templateUrl:“./contact form.component.html”, 样式URL:['./联系表单.component.css'], }) 导出类ContactFormComponent实现OnInit{ myForm:FormGroup; 构造函数(私有fb:FormBuilder){ this.myForm.valueChanges.subscribe(console.log); } ngOnInit(){} createForm(){ this.myForm=this.fb.group({ 名称:['',Validators.compose([Validators.required,Validators.minLength(3), 验证器。最大长度(50) ])], 电子邮件:['',Validators.compose([Validators.required,Validators.email]), 性别:['',验证器。必填], 条款:['',验证器。要求真实] }); } } 错误 错误:src/app/contact form/contact form.component.ts:15:5-错误TS2564:属性“myForm”没有初始值设定项,并且未在构造函数中明确指定。 15我的表格:表格组; ~~~~~~ src/app/contact-form/contact-form.component.ts:17:10-错误TS2565:分配前使用了属性“myForm”。 17 this.myForm.valueChanges.subscribe(console.log);
快走财产';我的表格';没有初始值设定项,并且未在构造函数中明确指定 从'@angular/core'导入{Component,HostListener,OnInit}; 从“@angular/forms”导入{FormBuilder、FormGroup、Validators}; @组成部分({ 选择器:“应用程序联系人表单”, templateUrl:“./contact form.component.html”, 样式URL:['./联系表单.component.css'], }) 导出类ContactFormComponent实现OnInit{ myForm:FormGroup; 构造函数(私有fb:FormBuilder){ this.myForm.valueChanges.subscribe(console.log); } ngOnInit(){} createForm(){ this.myForm=this.fb.group({ 名称:['',Validators.compose([Validators.required,Validators.minLength(3), 验证器。最大长度(50) ])], 电子邮件:['',Validators.compose([Validators.required,Validators.email]), 性别:['',验证器。必填], 条款:['',验证器。要求真实] }); } } 错误 错误:src/app/contact form/contact form.component.ts:15:5-错误TS2564:属性“myForm”没有初始值设定项,并且未在构造函数中明确指定。 15我的表格:表格组; ~~~~~~ src/app/contact-form/contact-form.component.ts:17:10-错误TS2565:分配前使用了属性“myForm”。 17 this.myForm.valueChanges.subscribe(console.log);,angular,typescript,Angular,Typescript,快走 this.myForm.valueChanges.subscribe(console.log) 表单创建后 this.myForm = this.fb.group 因为您试图在表单创建之前订阅表单 createForm() { this.myForm = this.fb.group({ name: ['', Validators.compose([Validators.required, Validators.minLength(3), Validato
this.myForm.valueChanges.subscribe(console.log)
表单创建后
this.myForm = this.fb.group
因为您试图在表单创建之前订阅表单
createForm() {
this.myForm = this.fb.group({
name: ['', Validators.compose([Validators.required, Validators.minLength(3),
Validators.maxLength(50)])],
email: ['', Validators.compose([Validators.required, Validators.email])],
gender: ['', Validators.required],
terms: ['', Validators.requiredTrue]
});
this.myForm.valueChanges.subscribe(console.log) }
您应该将
createForm()
代码移动到组件的构造函数中。在执行此操作之前,this.myForm.valueChanges.subscribe(console.log)代码>
理想情况下,您应该在构造函数中创建表单,并将订阅保存在ngOninit()
中。默认角度模板现在在tsconfig
文件中将strictPropertyInitialization
设置为true
你可以做两件事:
- 应用初始化属性的最佳实践(内联或构造函数中)
- 禁用tsconfig文件中的
strictPropertyInitialization
标志(不推荐)
信息:该错误与TypeScript的strictPropertyInitialization有关。可以通过以下方式进行修复:
myForm: FormGroup = this.fb.group({
name: ['', Validators.compose([Validators.required, Validators.minLength(3), Validators.maxLength(50)])],
email: ['', Validators.compose([Validators.required, Validators.email])],
gender: ['', Validators.required],
terms: ['', Validators.requiredTrue]
});
constructor(private fb: FormBuilder) { }
(实现来自Angular's,他们在那里提供,这是他们在profile editor.component.ts中的实现方式)谢谢,但此错误保留错误:src/app/contact form/contact form.component.ts:15:5-错误TS2564:属性“myForm”没有初始值设定项,并且在构造函数中没有明确指定。15我的表格:表格组~~~~~~但此错误表示您不在createform函数内移动valueChanges。只需在ngOnit中移动并调用createform函数谢谢,请接受,如正确的回答谢谢,但问题变为createtForm(),谢谢,但类型是formgroup,我无法初始化,当我添加时!出现其他错误
myForm: FormGroup = this.fb.group({
name: ['', Validators.compose([Validators.required, Validators.minLength(3), Validators.maxLength(50)])],
email: ['', Validators.compose([Validators.required, Validators.email])],
gender: ['', Validators.required],
terms: ['', Validators.requiredTrue]
});
constructor(private fb: FormBuilder) { }