0

私は Angular 2 ベータ版でフォーム送信に取り組んでおり、モデルで適切に動作する双方向のデータ バインディングを取得できますが、Enter キーを押すと、1 つのフィールドで動作するときに 3 つのフィールドがあると送信できません。テンプレートファイルは次のとおりです。

<form class="course-form" (ngSubmit)="submit()" novalidate>
  <input
    (keyup.escape)="clear()"
    ngControl="name"
    [(ngModel)]="name"
    autocomplete="off"
    autofocus
    class="course-form__input"
    placeholder="Course Name"
    required
    type="text">

  <input
    (keyup.escape)="clear()"
    ngControl="department"
    [(ngModel)]="department"
    autocomplete="off"
    autofocus
    class="course-form__input"
    placeholder="Course Department"
    required
    type="text">

  <input
    (keyup.escape)="clear()"
    ngControl="description"
    [(ngModel)]="description"
    autocomplete="off"
    autofocus
    class="course-form__input"
    placeholder="Course Description"
    required
    type="text">
</form>
Remove this: {{name}} {{description}} {{department}}

したがって、最初の入力だけで、何かを入力してEnterキーを押すと、問題なく送信されます。問題は、追加のフィールドを追加することです。ただし、3 つのボックスすべてにテキストを入力すると、{{}} データ バインディングが問題なく表示されます。これは typescript ファイルです。重要な場所は、クラスをエクスポートする場所です。最初にフィールドを空の文字列に設定し、次に誰かが Enter キーを押すと、submit() 関数を呼び出す必要があります。3 つのフィールドがある場合、console.log の出力は表示されませんが、1 の場合は表示されます。

import { Component } from 'angular2/core';
import { CourseService } from 'modules/course/course-service';
const styles: string = require('./course-form.scss');
const template: string = require('./course-form.html');

@Component({
  selector: 'course-form',
  styles: [styles],
  template
})

export class CourseForm {

  name: string = '';
  department: string = '';
  description: string = '';

  constructor(private courseService: CourseService) {}

  clear(): void {
    this.name = '';
    this.department = '';
    this.description = '';
  }

  submit(): void {
    const name: string = this.name.trim();
    const department: string = this.department.trim();
    const description: string = this.description.trim();
    console.log('submitted');

    if (name.length & department.length & description.length) {
      this.courseService.createCourse(name, department, description);
    }
    this.clear();
  }
}

価値があるのは、これが createCourse 関数です。

  createCourse(name: string, department: string, description: string): void {
    this.ref.push(new Course(name, department, description), (error: Error) => {
      if (error) {
        console.error('ERROR @ createCourse :', error);
      }
    });
  } 
4

0 に答える 0