Почему мой консольный журнал не распечатывает ввод из моей реактивной Angular формы? - PullRequest
0 голосов
/ 29 апреля 2020

Я пишу некоторый код для обработки пользовательского ввода в реактивной форме.

Я бы хотел узнать, почему мой метод onSubmit() не распечатывает ввод, который я помещаю в форму после нажатия кнопки отправки. Я настроил другую реактивную форму в своем проекте, которая является контактной формой только с вводом текста. В этом компоненте у меня есть аналогичный onSubmit() метод с а console.log. Когда я нажимаю кнопку отправки в контактной форме, мой оператор console.log работает на этом совершенстве, и я вижу напечатанный ввод. В контактной форме у меня нет никаких флажков в отличие от формы отправки, поэтому мне интересно, почему я не могу увидеть напечатанные данные? Я настроил обе формы очень схожим образом.

Вот файлы машинописи и шаблонов:

TS:

import { Component, OnInit } from '@angular/core';
import { FormGroup, Validators, FormBuilder } from '@angular/forms';

@Component({
  selector: 'app-submission',
  templateUrl: './submission-form.component.html',
  styles: []
})
export class SubmissionFormComponent implements OnInit {
  submissionForm: FormGroup;
  formSubmitted = false; //Holds status of the form

  constructor(private fb: FormBuilder) { }

  ngOnInit(): void { 
    this.createForm();
  }

  createForm(): void {
    this.submissionForm = this.fb.group({
      anonymous: [false],
      name: ['', [Validators.required, Validators.maxLength(50)]],
      alias: ['', [Validators.required, Validators.maxLength(50)]],
      contact: [false],
      email: ['', [Validators.required, Validators.email]],
      contentWarning: ['', [Validators.required]],
      message: ['', [Validators.required, Validators.minLength(10), Validators.maxLength(5000)]],
      agree: [false, [Validators.requiredTrue]]
    });
  }

  onSubmit() {
    this.formSubmitted = true; //Form has been submitted

    if (this.submissionForm.valid) {
      console.log('submissionForm', this.submissionForm.value); //Process the form
    }
  }

  //Getter methods
  get anonymous() { return this.submissionForm.get('anonymous') };
  get name() { return this.submissionForm.get('name') };
  get alias() { return this.submissionForm.get('alias') };
  get contact() { return this.submissionForm.get('contact') };
  get email() { return this.submissionForm.get('email') };
  get contentWarning() { return this.submissionForm.get('contentWarning') };
  get message() { return this.submissionForm.get('message') };
  get agree() { return this.submissionForm.get('agree') };
}

HTML:

<section class="section">
    <div class="columns is-centered">
        <div class="column is-four-fifths">
            <h1 class="title">Submission Form</h1>
            <p *ngIf="formSubmitted" [ngClass]=" 'success'">Submitted successfully</p>
            <form [formGroup]="submissionForm" (ngSubmit)="onSubmit()">
                <div class="field">
                    <!--Checkbox for remaining anonymous-->
                    <label class="checkbox">
                        <input type="checkbox" 
                        formControlName="anonymous">
                        Remain anonymous
                    </label>
                </div>

                <div class="field" [hidden]="!anonymous.value">
                    <!--Field for alias--> 
                    <input class="input"
                        type="text"
                        placeholder="Alias"
                        formControlName="alias"
                        [ngClass]="{'form-submitted': formSubmitted}">
                    <div class="help-is-danger" *ngIf="alias.invalid && !alias.pristine">Alias should be 50 characters or less.</div>
                </div>

                <div class="field" [hidden]="anonymous.value">
                    <!--Field for name--> 
                    <input  class="input"
                        type="text"
                        placeholder="Name"
                        formControlName="name"
                        [ngClass]="{'form-submitted': formSubmitted}">
                    <div class="help-is-danger" *ngIf="name.invalid && !name.pristine">Name should be 50 characters or less.</div>
                </div>

                <div class="field">
                    <!--Checkbox for being contacted-->
                    <label class="checkbox">
                        <input type="checkbox" formControlName="contact">
                        Contact me
                    </label>
                </div>

                <div class="field" [hidden]="!contact.value">
                    <!--Field for email-->
                    <input  class="input"
                        type="text"
                        placeholder="Email"
                        *ngIf="contact"
                        formControlName="email"
                        [ngClass]="{'form-submitted': formSubmitted}">
                    <div class="help-is-danger" *ngIf="email.invalid && !email.pristine">
                        <p *ngIf="email.errors.email">Valid email is required.</p>
                    </div>
                </div>

                <div class="field">
                    <!--Field for content warnings-->
                    <input  class="input"
                        type="text"
                        placeholder="Content warnings"
                        formControlName="name">
                    <div class="help-is-danger" *ngIf="contentWarning.invalid && !contentWarning.pristine">Content warnings are required.</div>
                </div>

                <div class="field">
                    <!--Text area for message-->
                    <textarea  class="textarea"
                        type="text"
                        placeholder="Your Submission"
                        formControlName="message">
                    </textarea>
                    <div class="help-is-danger" *ngIf="message.invalid && !message.pristine">
                        <p *ngIf="message.errors.minlength">Message is required and should be at least 10 characters.</p>
                    </div>
                </div>

                <div class="field">
                    <!--Checkbox for agree-->
                    <label class="checkbox">
                        <input type="checkbox" 
                            formControlName="agree">
                        Agree
                    </label>
                    <div class="help-is-danger" *ngIf="submissionForm.hasError('required', 'agree') && !agree.pristine">Must check 'Agree' in order to submit.</div>    
                </div>

                <!--Submit Button-->
                <button type="submit" [disabled]="!agree.valid && !submissionForm.valid">Submit</button> 
            </form>
        </div>
    </div>
</section>
...