显然,您可以使用expandedAngular Material扩展面板上的输入来默认加载时打开的特定面板。但是,我有一个手风琴,其中所有扩展面板都是动态生成的,并且都是可选的,但是我想打开第一个面板。
我可以遍历ngFor使用模板的每个s来生成面板以查看其是否存在,然后在第一个索引上添加属性,但是有几个循环可以拉入模板,并且看起来很乱。我希望能够mat-accordion在视图完成后从中获取一些属性,以查看哪个是手风琴上的第一个属性并添加该属性,但是看来这是不可能的。有人知道是否有某种方法可以做到吗?
所以我创建了一个自定义验证器来验证确认密码输入是否与原始条目匹配。工作正常。但是,我允许这两个字段都为空,因为这是在某人可以在其设置中更改密码的页面上,当然他们可能不想这样做。如果两者都为空白,则表单应该有效,以便可以提交,并且可以为他们的个人资料更新其他设置,但发生了一些奇怪的事情。
表格道具:
passControl = new FormControl('', [
FormValidation.checkPasswordStrength()
]);
passConfirmControl = new FormControl('', [
]);
profileForm = new FormGroup(
{
password: this.passControl,
passwordConfirm: this.passConfirmControl
},
{
validators: FormValidation.checkPasswordsMatch()
}
);
Run Code Online (Sandbox Code Playgroud)
这是我的验证功能:
static checkPasswordsMatch(): ValidatorFn {
return (control: AbstractControl): {[key: string]: any} => {
let passwordCtrl = control.get('password');
let passwordConfirmCtrl = control.get('passwordConfirm');
// allow blank for when they don't want to change password
if (passwordCtrl.value === '' && passwordConfirmCtrl.value === '') {
console.log('both are blank');
return null;
}
if (passwordCtrl.value !== …Run Code Online (Sandbox Code Playgroud) javascript custom-validators typescript angular angular-reactive-forms