Изменение значений не вызывается в Реактивной форме с помощью Angular6 - PullRequest
2 голосов
/ 30 марта 2019

Я использую реактивную форму для выпадающего списка, и я хочу, чтобы изменения значений вызывались при изменении моего выпадающего значения, я реализовал так

 ngOnInit() {
    this.employeerosterForm = this._formbuilder.group({
      drpDomain: [''],
      drpPlatform: [{ value: this.platformInitialValue, disabled: this.platformControlDisabled }],
      drpApplication: [{ value: this.applicationInitialValue, disabled: this.applicationControlDisabled }],
      drpIndividual: [{ value: this.individualInitialValue, disabled: this.individualControlDisabled }]
    })

 this.employeerosterForm.controls.drpDomain
      .valueChanges
      .subscribe(domain => {
        alert();
      });
  }

но когда я изменяю значение в раскрывающемся списке, изменение значения не вызывается, даже если я подписан. что не так?

Я даже пытался использовать это на ngOninit ()

 this.employeerosterForm.get('drpDomain')
    .valueChanges
      .subscribe(domain => {
        alert();
      });

но это не работает

РЕДАКТИРОВАТЬ 1

HTML

<select class="form-control" formControlname='drpDomain'>
              <option>Select Domain</option>
              <option *ngFor='let d of domain' [value]='d.DOMAINNAME'>{{d.DOMAINNAME}}</option>
            </select>

.ts file

ngOnInit() {
    this.initializeControls();
    this.interactionWatchDog();
  }

 interactionWatchDog() {
    this.employeerosterForm.get('drpDomain')
      .valueChanges
      .subscribe(domain => {
        alert();
      });
  }

initializeControls() {
    this.employeerosterForm = this._formbuilder.group({
      drpDomain: [''],
      drpPlatform: [{ value: this.platformInitialValue, disabled: this.platformControlDisabled }],
      drpApplication: [{ value: this.applicationInitialValue, disabled: this.applicationControlDisabled }],
      drpIndividual: [{ value: this.individualInitialValue, disabled: this.individualControlDisabled }]
    })
  }

Ответы [ 2 ]

2 голосов
/ 30 марта 2019

У вас есть опечатка здесь formControlname в вашем шаблоне, возможно, из-за этого он не работает:

<select class="form-control" formControlName='drpDomain'>
  <option>Select Domain</option>
  <option *ngFor='let d of domain' [value]='d.DOMAINNAME'> 
    {{d.DOMAINNAME}}
  </option>
</select>

Проверка stackblitz

0 голосов
/ 30 марта 2019

Вы можете захотеть:

this.employeerosterForm.valueChanges

или

this.employeerosterForm.get('controlName').valueChanges

Также убедитесь, что ваша форма в шаблоне правильно подключена, чтобы соответствовать классу, она может быть осиротела каким-то образом.

...