Обновление значения формы возвращает undefined - PullRequest
0 голосов
/ 10 июля 2020

Это мой код компонента

this.participantForm = this.fb.group({
      occupation: [null],
      consent : new FormGroup({
        consentBy: new FormControl(''),
        consentDate: new FormControl(new Date())
      })
 })

Это html

<form [formGroup]="participantForm">
    <div formGroupName="consent">
          <label>
            Name:
            <input type="text" formControlName="consentBy">
          </label>
          <label>
            Date:
            <input type="text" formControlName="consentDate">
          </label>
        </div>
        </form>
    

При отправке мне нужно отформатировать значение даты.

 get pfc() {
    return this.participantForm.controls;
  }
this.participantForm.patchValue({
            consent: {
              consentDate : moment(this.pfc.consent.consentDate.value, "DD-MMM-YYY HH:mm").format(
                "DD-MMM-YYYY HH:mm")
              }
          });
      

Это вызывает ошибку

 ERROR TypeError: Cannot read property 'consentDate' of undefined.
     
     

Здесь согласие не определено. Как мне обновить это значение формы?

Ответы [ 3 ]

1 голос
/ 10 июля 2020

Вы можете напрямую взять значение из формы или получить значение json и использовать его. Проблема, похоже, связана с присвоением значения для pf c

const formData = this.participantForm.getRawValue();
this.participantForm.patchValue({
            consent: {
              consentDate : moment(formData.consent.consentDate, "DD-MMM-YYY HH:mm").format(
                "DD-MMM-YYYY HH:mm")
              }
          });
0 голосов
/ 10 июля 2020

Если this.pfc сопоставляется с this.participantForm.controls, который кажется группой форм. Когда вы получаете доступ к this.pfc.consent.consentDate.value, вы пытаетесь получить доступ к (this.pfc as FormGroup).consent, который не определен, так как FormGroup не имеет поля согласия. Вот почему вы получаете сообщение об ошибке.

Чтобы получить доступ к значение правильно, вам нужно использовать

this.pfc.value.consent.consentDate

или

this.pfc.get('consent.consentDate').value
0 голосов
/ 10 июля 2020

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

this.participantForm.patchValue({
            consent: {
              consentDate : moment(this.pfc.get("consent").get("consentDate").value, "DD-MMM-YYY HH:mm").format(
                "DD-MMM-YYYY HH:mm")
              }
          });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...