valueChanges 尝试抛出对象为空的错误(反应形式)
valueChanges attempt throws error of object being null (reactive forms)
Angular 4个问题。
我正在尝试破译 angular 中反应式表单的某些部分,更具体地说是与反应式表单相关,响应用户操作。
我想尝试对用户输入执行操作,即从建议列表中 select。
所以在构造函数中,我有 formBuilder 和帮助我构建值的服务,我从中为输入字段选择值。
问题是,当我想使用 valueChanges 来捕获我输入的值并用它做一些事情时,我得到了一个 'object is possibly null' 错误,即使我采取了一些预防措施来防止对象为 null。
如:额外条件,在此之前,实际在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));
}
}
}
也许你应该这样做
let input1 = this.myForm.get('input1');
if (input1 != null) {
input1.valueChanges.subscribe(value => console.log(value));
}
if (this.myForm) {
if (this.myForm.get('input1')) {
const variable = this.myForm.get('input1'); // create a variable
variable!.valueChanges.subscribe(value => console.log(value)); // use Non-null assertion operator(used in Typescript 2)
}
}
因为编译器无法判断该变量是否为空,我们需要使用非空断言operator.assert它的操作数是非空且非未定义的。
Angular 4个问题。
我正在尝试破译 angular 中反应式表单的某些部分,更具体地说是与反应式表单相关,响应用户操作。
我想尝试对用户输入执行操作,即从建议列表中 select。
所以在构造函数中,我有 formBuilder 和帮助我构建值的服务,我从中为输入字段选择值。
问题是,当我想使用 valueChanges 来捕获我输入的值并用它做一些事情时,我得到了一个 'object is possibly null' 错误,即使我采取了一些预防措施来防止对象为 null。
如:额外条件,在此之前,实际在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));
}
}
}
也许你应该这样做
let input1 = this.myForm.get('input1');
if (input1 != null) {
input1.valueChanges.subscribe(value => console.log(value));
}
if (this.myForm) {
if (this.myForm.get('input1')) {
const variable = this.myForm.get('input1'); // create a variable
variable!.valueChanges.subscribe(value => console.log(value)); // use Non-null assertion operator(used in Typescript 2)
}
}
因为编译器无法判断该变量是否为空,我们需要使用非空断言operator.assert它的操作数是非空且非未定义的。