angular - “AbstractControl”类型上不存在属性“控件”。”
问题描述
问题背后的原因是什么>?
类型“AbstractControl”上不存在属性“控件”
<password-strength-bar [password]="registerForm.controls.passwords.controls.password.value"
#html代码
<div class="form-group row" formGroupName="passwords">
<label for="" class="col-sm-2 col-form-label">Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" formControlName="password"
[class.is-invalid]="registerForm.controls.passwords.controls.password.touched && registerForm.controls.passwords.controls.password.invalid">
<password-strength-meter [password]="registerForm.controls.passwords.controls.password.value"
(strengthChange)="onStrengthChange($event)">
</password-strength-meter>
<div *ngIf="registerForm.controls.passwords.controls.password.touched">
<div class="text-danger"
*ngIf="registerForm.controls.passwords.controls.password.touched && registerForm.controls.passwords.controls.password.hasError('required')">
Password is required</div>
</div>
</div>
</div>
#代码
public registerForm = this.fb.group({
email : ['',
[Validators.required, Validators.email],
[
// this.isEmailUnique.bind(this),
// DuplicateEmailValidator(this.apiService)
] //async validator(used as in view)
],
passwords : this.fb.group({
password : ['', Validators.compose([Validators.required])],
confirmPassword : ['', Validators.compose([Validators.required])]
}, {
}),
});
解决方案
passwords
您可以在 .ts 文件中为该组创建一个 getter 。
registerForm: FormGroup;
public get passwordsGroup(): FormGroup {
return this.registerForm.get('passwords') as FormGroup;
}
constructor(private fb: FormBuilder) { }
ngOnInit() {
this.buildForm();
}
buildForm() {
this.registerForm = this.fb.group({
email : ['',
[Validators.required, Validators.email],
[
// this.isEmailUnique.bind(this),
// DuplicateEmailValidator(this.apiService)
] //async validator(used as in view)
],
passwords : this.fb.group({
password : ['', Validators.compose([Validators.required])],
confirmPassword : ['', Validators.compose([Validators.required])]
}, {
}),
});
}
然后在 HTML
<password-strength-meter [password]="passwordsGroup?.get('password')?.value"
(strengthChange)="onStrengthChange($event)">
</password-strength-meter>
或(应该有效,需要测试)
<password-strength-meter [password]="passwordsGroup?.value?.password"
(strengthChange)="onStrengthChange($event)">
</password-strength-meter>
推荐阅读
- python - 将字符串中的所有单词设为小写,除了第一个单词
- ios - 将 kCVPixelFormatType_32BGRA sampleBuffer 转换为 kCVPixelFormatType_420YpCbCr8BiPlanarFullRange
- macos - 如何在端口上创建 vpn 连接并仅选择性地使用它
- algorithm - 寻找正确元素组合的高效算法
- c++ - 具有多重继承和抽象基类的自定义异常中用户定义的空构造函数
- javascript - 如何在 Semantic-UI 中添加换行符 whitin 弹出数据工具提示
- python - NLP——正确标记诸如“纽约”或“嘻哈”之类的词
- java - 如何使用 Maven 从我指定的目录的内容生成 JAR 文件?
- android - 在蓝牙 LE 连接中使用 ScanSettings 时 Android“错误:无法解析扫描记录”
- angular - 如何在 Angular 中使用最新的 SASS 版本?