2
我正在尝试使用Angular 4.4.6和Typescript 2.4.2编写应用程序。将“strictNullChecks”编译器选项设置为true。为什么我的“If”块无法在打字稿中作为打字员?
在我的组件类的顶部,我声明一个属性的表单,像这样:
BasicForm: FormGroup | null;
然后我初始化我在OnInit
生命周期挂钩的形式。像这样:
ngOnInit(){
this.BasicForm = new FormGroup({
name : new FormControl('')
});
}
问题
当我试图引用我的形式,一类方法,编译器会骂我,说“对象可能是空” ......这让我困惑,因为我将引用包装在一个检查为空的if块中。
myMethod(){
if(this.BasicForm){
let name = this.BasicForm.get('name').value;
}
}
为了解决这个问题,我有我的访问值property.Like所以前添加非空断言操作:
myMethod(){
if(this.BasicForm){
let name = this.CampgroundForm.get('name')!.value;
}
}
但我不喜欢用这个......这似乎对TS想要实现的东西产生反作用。
为什么不用这个控制器控制流量分析?有没有比添加非null断言运算符更好的方法?
我最终为自己编写了自己的帮助器方法具体的用例。谢谢你的指导和帮助......它肯定有帮助。在附注中,这个问题很快就会被解决。 https://github.com/angular/angular/pull/20040 – calbear47
很高兴帮助。在pull请求登陆后,你仍然需要帮助你的帮助者,它只是增加了泛型支持 - “AbstractControl.get()”的结果仍然是可空的。 –