Angular 4问题。
我试图破解角度的反应形式的某些部分,更具体地说,与被动反应的形式相关,响应用户动作。
我想尝试对用户输入执行操作,即从建议列表中进行选择。
所以在构造函数中我有formBuilder和帮助我构建值的服务,我从中为我的输入字段选择一个值。
问题是,当我想玩valueChanges时,为了捕获我输入的值并用它做一些事情,我得到一个'对象可能是空的'即使我采取了一些防止对象为空的预防措施,也会出错。
例如:额外的条件,在此之前,实际上在initForm中定义了myForm(所以肯定它不能为空)。
请快速指点,谢谢!
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));
}
}
}
答案 0 :(得分:1)
也许你应该这样做
let input1 = this.myForm.get('input1');
if (input1 != null) {
input1.valueChanges.subscribe(value => console.log(value));
}
答案 1 :(得分:1)
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)
}
}
因为编译器不能告诉事实,那个变量是null,我们需要使用一个非空的断言operator.assert,它的操作数是非空的和非未定义的。