Может ли средство доступа к значениям Angular возвращать только одну переменную вместо объекта?

введите здесь описание изображения

У меня есть вложенная форма. Родительская форма имеет два элемента управления: phoneInfo и Remember.

Есть ли способ для дочерней формы вернуть только одно значение (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' } };
  }

person JuliusJ    schedule 25.07.2020    source источник


Ответы (1)


Я думаю, вам придется изменить то, что внутри registerOnChange:

registerOnChange(fn: any): void {
  this.form.valueChanges.pipe(
    pluck('fullPhone'),
  ).subscribe(fn);
}
person Andrei Gătej    schedule 25.07.2020
comment
Это сработало, спасибо! Ответ оказался намного проще, чем я ожидал :D - person JuliusJ; 25.07.2020
comment
Рад, что смог помочь! - person Andrei Gătej; 25.07.2020