为什么 angular 在 ngOnInit 中创建时说我的对象可以为空?
Why is angular saying my object can be null when creating in ngOnInit?
正在组件中创建表单:
export class LoginPageComponent implements OnInit {
form!: FormGroup
constructor() { }
ngOnInit() {
this.form = new FormGroup({
email: new FormControl(null, [Validators.required, Validators.email]),
password: new FormControl(null, [Validators.required, Validators.minLength(6)]),
})
}
}
在 html 中,我执行值输入检查
<div *ngIf="form.get('email').touched && form.get('email').invalid" class="validation">
<small *ngIf="form.get('email').errors.required">Enter Email</small>
<small *ngIf="form.get('email').errors.email">Enter valid Email</small>
</div>
对于出现 IDEA 形式的每一行,发誓
error TS2531: Object is possibly 'null'
据我所知,这是因为对象的创建发生在 ngOnInit 中。放一个“?”到处签名,IDEA 停止骂人:
<div *ngIf="form.get('email')?.touched && form.get('email')?.invalid" class="validation">
<small *ngIf="form.get('email')?.errors.required">Enter Email</small>
<small *ngIf="form.get('email')?.errors.email">Enter valid Email</small>
</div>
但是它的正确性如何?
也许这个问题有更正确的解决方法?
也许我创建的 Form Group 对象不正确?
使用安全导航运算符检查控件验证的代码在逻辑上没有任何错误,因为它自 3.7 版以来一直在 TypeScript 中。
我注意到的另一件事是 HTML 中控件的重复获取。
将重复的 this.form.get(..)
调用移动到 getter 中,如下所示:
get email() {
return this.form.get('email');
}
get password() {
return this.form.get('password');
}
和 HTML 脚本将更整洁,如 ?运算符仍然一致:
<div *ngIf="email?.touched && email?.invalid" class="validation">
<small *ngIf="email?.errors.required">Enter Email</small>
<small *ngIf="email?.errors.email">Enter valid Email</small>
</div>
正在组件中创建表单:
export class LoginPageComponent implements OnInit {
form!: FormGroup
constructor() { }
ngOnInit() {
this.form = new FormGroup({
email: new FormControl(null, [Validators.required, Validators.email]),
password: new FormControl(null, [Validators.required, Validators.minLength(6)]),
})
}
}
在 html 中,我执行值输入检查
<div *ngIf="form.get('email').touched && form.get('email').invalid" class="validation">
<small *ngIf="form.get('email').errors.required">Enter Email</small>
<small *ngIf="form.get('email').errors.email">Enter valid Email</small>
</div>
对于出现 IDEA 形式的每一行,发誓
error TS2531: Object is possibly 'null'
据我所知,这是因为对象的创建发生在 ngOnInit 中。放一个“?”到处签名,IDEA 停止骂人:
<div *ngIf="form.get('email')?.touched && form.get('email')?.invalid" class="validation">
<small *ngIf="form.get('email')?.errors.required">Enter Email</small>
<small *ngIf="form.get('email')?.errors.email">Enter valid Email</small>
</div>
但是它的正确性如何?
也许这个问题有更正确的解决方法?
也许我创建的 Form Group 对象不正确?
使用安全导航运算符检查控件验证的代码在逻辑上没有任何错误,因为它自 3.7 版以来一直在 TypeScript 中。
我注意到的另一件事是 HTML 中控件的重复获取。
将重复的 this.form.get(..)
调用移动到 getter 中,如下所示:
get email() {
return this.form.get('email');
}
get password() {
return this.form.get('password');
}
和 HTML 脚本将更整洁,如 ?运算符仍然一致:
<div *ngIf="email?.touched && email?.invalid" class="validation">
<small *ngIf="email?.errors.required">Enter Email</small>
<small *ngIf="email?.errors.email">Enter valid Email</small>
</div>