您可以通过使用无表单和验证在角容易归档此,这里是验证同一密码注册组件的简单例子。
注意:您可以了解更多关于无功形式本文档中https://angular.io/docs/ts/latest/guide/reactive-forms.html
首先,我们需要导入活性形式模块到我们的应用程序:
@NgModule({
imports: [ BrowserModule, ReactiveFormsModule ], // <- this module
declarations: [ App ],
bootstrap: [ App ]
})
export class AppModule {}
,并创建新的组件:
@Component({
selector: 'tpc-register',
template: `
<form [formGroup]="form" novalidate (ngSubmit)="onSubmit()">
<div>
<label>
Username:<br>
<input formControlName="username" type="text">
</label>
</div>
<div formGroupName="passGroup">
<label>
Password:<br>
<input formControlName="password" type="password"
[class.form-error]="form.get('passGroup').errors?.invalid"
>
</label>
</div>
<div formGroupName="passGroup">
<label>
Confirm Password:<br>
<input formControlName="confirmPassword" type="password"
[class.form-error]="form.get('passGroup').errors?.invalid"
>
</label>
</div>
<button [disabled]="form.invalid">Register</button>
</form>
<pre>Form value: {{ form.value | json }}</pre>
<pre>Form valid: {{ form.valid }}</pre>
`,
styles: [
`
.form-error {
border-color: red
}
`
]
})
export class TpcRegister implements OnInit {
form: FormGroup;
constructor(private fb: FormBuilder) {}
ngOnInit() {
// create new Form by FormBuilder
this.form = this.fb.group({
username: ['', /* Validation */[Validators.required]],
// for password and confirm password
passGroup: this.fb.group({
password: ['', /* Validation */[Validators.required]],
confirmPassword: ['', /* Validation */[Validators.required]],
}, /* Custom Validation */ {
validator: comparePassword
})
})
}
onSubmit() {
if (this.form.valid) {
const formValue = Object.assign({}, this.form.value)
formValue.password = formValue.passGroup.password
delete formValue.passGroup
// do stuff to register user with formValue
console.log(formValue)
}
}
}
请看看到ngOnInit
方法,神奇的东西在这里发生。
我们创建passGroup
并为此组应用自定义验证程序,在这种情况下为comparePassword
。
export function comparePassword(group: FormGroup) {
const pass = group.value;
return (pass.password === pass.confirmPassword) ? null /* It's good */ : {
invalid: true
}
}
上述功能将FormGroup
类型的group
,那么我们就可以比较password
和confirmPassword
值。
如果他们是一样的,所以在这里没有什么错误,我们返回null,否则我们会返回一个对象,告诉我们的应用程序该组有错误。
您可以现场演示这里打球:https://plnkr.co/edit/Vk0G7DaPB1hRK9f1UVEX?p=preview
看到这个[问题](http://stackoverflow.com/q/35474991/4911842) – developer033
当然可以!我将通过它A.S.A.P. – Ivar