我剛學NG2反應形式與官方樣片:爲什麼反應形式,抽樣合格數據onvalueChanged但不使用它
https://angular.io/docs/ts/latest/cookbook/form-validation.html#!#live-example
看看定義的方法:onValueChanged(數據? :any){
哪裏可以傳遞數據,但它在方法中永遠不會被使用?
爲什麼然後訂閱它上面的一些行? =>
this.heroForm.valueChanges
.subscribe(data => this.onValueChanged(data));
任何人都可以解釋我請這個奇怪的代碼?
ngOnInit(): void {
this.buildForm();
}
buildForm(): void {
this.heroForm = this.fb.group({
'name': [this.hero.name, [
Validators.required,
Validators.minLength(4),
Validators.maxLength(24),
forbiddenNameValidator(/bob/i)
]
],
'alterEgo': [this.hero.alterEgo],
'power': [this.hero.power, Validators.required]
});
this.heroForm.valueChanges
.subscribe(data => this.onValueChanged(data));
this.onValueChanged(); // (re)set validation messages now
}
onValueChanged(data?: any) {
if (!this.heroForm) { return; }
const form = this.heroForm;
for (const field in this.formErrors) {
// clear previous error message (if any)
this.formErrors[field] = '';
const control = form.get(field);
if (control && control.dirty && !control.valid) {
const messages = this.validationMessages[field];
for (const key in control.errors) {
this.formErrors[field] += messages[key] + ' ';
}
}
}
}
formErrors = {
'name': '',
'power': ''
};
validationMessages = {
'name': {
'required': 'Name is required.XXX',
'minlength': 'Name must be at least 4 characters long.',
'maxlength': 'Name cannot be more than 24 characters long.',
'forbiddenName': 'Someone named "Bob" cannot be a hero.'
},
'power': {
'required': 'Power is required.'
}
};
}
那真是無聊......有人想無緣無故地關閉這個合理的問題...... – Pascal