Angular создает компонент реактивной формы дважды, отображая один и применяя директивы к другому - PullRequest
0 голосов
/ 13 ноября 2018

Итак, у меня есть угловой 2, а именно 6 реактивной формы компонента, этот компонент встроен в другой контейнерный компонент, который отображается с использованием углового наложения cdk.

  • оверлей - это сервис оверлеев cdk, ничего странного.
  • контейнерный компонент имеет реактивную форму

Контейнерный компонент

<form [FormGroup]="form">
<div  class="column col-5 col-mx-auto">
<reactive-form-component formControlName="dateField"></reactive-form-component>
</form>

Реактивный сильфон

import { Component, OnInit, forwardRef, OnDestroy } from '@angular/core';
import * as moment from 'moment';

import {
  NG_VALUE_ACCESSOR,
  ControlValueAccessor,
  FormGroup,
  FormBuilder,
  FormControl
} from '@angular/forms';
import { Subscription } from 'rxjs';
@Component({
  selector: 'er-alt-reactive-form-component',
  templateUrl: './alt-reactive-form-component.html',
  styleUrls: ['./er-alt-reactive-form-component.css'],
  providers: [
{
     provide: NG_VALUE_ACCESSOR,
      multi: true,
      useClass: forwardRef(() => AltReactiveFormComponentComponent)
    }
  ]
})
export class AltReactiveFormComponent implements ControlValueAccessor, 
OnDestroy {

 constructor( private _fb:FormBuilder) {
 console.log('cons')
}

   registerOnChange(onChange: any): void {
     console.log('c', onChange);
     console.log(this);
     // this._onChange = (x) => console
     this._onChange = onChange;
     console.log(this._onChange === onChange);
   }

   registerOnTouched(onTouch: any): void {
     console.log(this);
     console.log('t', onTouch);
     this._onTouch = onTouch;
     console.log(this._onTouch === onTouch);
   }

   }

по касанию и по изменению являются частными очень урезанная версия, но отображается та же ошибка https://angular -1tzuhj.stackblitz.io --- предварительный просмотр stackblitz https://stackblitz.com/edit/angular-1tzuhj какие-нибудь идеи о том, что, черт возьми, происходит?

1 Ответ

0 голосов
/ 13 ноября 2018

Итак, ради потомства я оставляю это здесь, я нашел проблему. Я использовал useClass вместо useExisting. что вызвало проблему

...