【发布时间】:2021-08-18 17:06:18
【问题描述】:
Angular 4 问题。
我正在尝试以角度解读反应式表单的某些部分,更具体地说,与反应式表单相关,以响应用户操作。
我想尝试对用户输入执行操作,即从建议列表中进行选择。
因此,在构造函数中,我有 formBuilder 和帮助我构建值的服务,我从中选择一个作为输入字段的值。
问题是,当我想使用 valueChanges 来捕获我输入的值并对其进行处理时,即使我采取了一些预防措施来防止对象为空,我也会收到“对象可能为空”错误。
如:额外条件和之前,实际上在initForm里面定义了myForm(所以肯定不能为null)。
请大家指点一下,谢谢!
constructor(private formBuilder: FormBuilder, private myService: MyService) {
}
ngOnInit() {
this.initForm(this.formBuilder);
}
private initForm(formBuilder: FormBuilder): void {
this.myForm = formBuilder.group({
input1: ['', Validators.minLength(3)],
input2: [{value: '', disabled: true}]
});
if (this.myForm) {
if (this.myForm.get('input1')) {
this.myForm.get('input1').valueChanges.subscribe(value => console.log(value));
}
}
}
【问题讨论】:
-
Denys,你的意思是像这样离开它:
input1: [{value: ''}],或input1: [{value: '', disabled: false}],- 我尝试了这两种变体,但我仍然遇到那个空问题。谢谢 -
它会进入 this.myform 吗?您可以在那里控制台记录您的输入吗?
-
这在 formBuilder.group 定义中,就像在我上面的代码中一样,我首先按名称将表单控件添加到表单中(在 html 中,我有等效的 formControlName="input1" 等等)。这个表单组定义在 initForm 方法中,在表单组定义之后(从我的代码中可以看出),我引用了表单组,所以它是 null 令人惊讶(不是吗?)
-
否认,谢谢你的想法。现在我更加惊讶了。所以 console.log(this.myForm);具有预期值,并且在下一行 this.myForm.get('input1').valueChange throws 对象可能为 null
-
全部预期为 3?输入1,输入2和?
标签: angular angular-reactive-forms