Angular 值访问器 return 可以只有一个变量而不是对象吗?
Can Angular value accessor return only one variable instead of object?
我有一个嵌套表单。父窗体有两个控件:phoneInfo 和 remember。
有没有办法让子表单 return 只有一个值 (fullPhone) 而不是整个对象?
想要的结果:
{
"phoneInfo": (returns fullPhone),
"remember": true
}
我试过使用 ControlValueAccessor
子形式的当前提供者:
providers: [
{
provide: NG_VALIDATORS,
useExisting: forwardRef(() => PhoneFormComponent),
multi: true
},
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => PhoneFormComponent),
multi: true
}
]
控制值存取接口:
public onTouched: () => void = () => {};
writeValue(val: any): void {
console.log(val);
val && this.form.setValue(val, { emitEvent: false });
}
registerOnChange(fn: any): void {
this.form.valueChanges.subscribe(fn);
}
registerOnTouched(fn: any): void {
this.onTouched = fn;
}
validate(c: AbstractControl): ValidationErrors | null {
return this.form.valid ? null : { invalidForm: { valid: false, message: 'form fields are invalid' } };
}
我认为你必须修改里面的内容 registerOnChange
:
registerOnChange(fn: any): void {
this.form.valueChanges.pipe(
pluck('fullPhone'),
).subscribe(fn);
}
我有一个嵌套表单。父窗体有两个控件:phoneInfo 和 remember。
有没有办法让子表单 return 只有一个值 (fullPhone) 而不是整个对象?
想要的结果:
{
"phoneInfo": (returns fullPhone),
"remember": true
}
我试过使用 ControlValueAccessor
子形式的当前提供者:
providers: [
{
provide: NG_VALIDATORS,
useExisting: forwardRef(() => PhoneFormComponent),
multi: true
},
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => PhoneFormComponent),
multi: true
}
]
控制值存取接口:
public onTouched: () => void = () => {};
writeValue(val: any): void {
console.log(val);
val && this.form.setValue(val, { emitEvent: false });
}
registerOnChange(fn: any): void {
this.form.valueChanges.subscribe(fn);
}
registerOnTouched(fn: any): void {
this.onTouched = fn;
}
validate(c: AbstractControl): ValidationErrors | null {
return this.form.valid ? null : { invalidForm: { valid: false, message: 'form fields are invalid' } };
}
我认为你必须修改里面的内容 registerOnChange
:
registerOnChange(fn: any): void {
this.form.valueChanges.pipe(
pluck('fullPhone'),
).subscribe(fn);
}