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);
}