フォーム内のカスタムコントロールでngModelを使用するにはどうすればよいですか?

数百

選択ボックスを処理するためのコンポーネントを作成しましたが、フォームを送信した後にフォームタグに配置すると、選択の結果がコンソールに表示されません。

私のコードの問題は何ですか?どうすればこれを修正できますか?

  • testOption:は、渡したオブジェクトの配列であり、選択ボックスに@Input。を付けてスローします

これが選択ボックスコンポーネントです:

import { Component, OnInit, Input } from '@angular/core';

@Component({
    selector: 'input-select',
    template:`
      <div class="field-select">
        <span><icon name="select-arrow" size="10"></icon></span>
        <select name="{{name}}" class="field">
          <option value="0" disabled selected>{{label}}</option>
          <option *ngFor="let option of options" [ngValue]="option.value">{{option.name}}</option>
        </select>
      </div>
    `
})
export class InputSelectComponent implements OnInit {
    @Input() label: string;
    @Input() name: string;
    @Input() options;


    // testOptions = [
    //   {value:'test',name:'test2'},
    //   {value:'test',name:'test2'}
    // ];

    constructor() { }

    ngOnInit() {
      console.log(this.options);
     }

}

HTMLでの使用法:

<input-select label="test" name="select2" [options]="testOption"></input-select>

フォームhtml:

<form role="form" class="form" #f="ngForm" (ngSubmit)="onSubmit(f)">
    <input class="field" name="name" ngModel type="text" placeholder="n1">
    <input-select label="b2" name="select2" [options]="testObject"></input-select>
    <input class="field" name="building-type" type="text" ngModel placeholder="b3">
</form>

コンソールログ:(選択ボックスの値はありません)

Object {name: "test", building-type: "tset" }
mxii

私は今あなたの問題を抱えていると思います。

ControlValueAccessorカスタムコンポーネントに実装して、ngModel!?を使用してフォーム内で使用します。

コンポーネントは次のようになります。

@Component({
   selector: 'ng2-input-select',
   template: `
      <div class="field-select">
        <select name="{{ name }}" class="field" [(ngModel)]="value" (ngModelChange)="_onChange($event)">
          <option value="" disabled selected>{{ label }}</option>
          <option *ngFor="let option of options" [value]="option.value">{{ option.name }}</option>
        </select>
      </div>
   `,
   providers: [
      { /* idk why or what this will do exactly.. but it works! ;) */
         provide: NG_VALUE_ACCESSOR,
         useExisting: forwardRef(() => SelectBoxComponent),
         multi: true
      }
   ]
})
export class SelectBoxComponent implements OnInit, ControlValueAccessor {
  @Input() label: string;
  @Input() name: string;
  @Input() options;
  @Input() value: string = '';

  // ControlValueAccessor implementation
  // ====================================

  // call if value was changed inside our component
  private _onChange = (_: any) => { };
  // call if input was "touched" .. !
  private _onTouched = () => { };

  // incoming change..
  public writeValue(val: any) {
    this.value = val;
  }

  public registerOnChange(fn: (_: any) => void): void { this._onChange = fn; }
  public registerOnTouched(fn: () => void): void { this._onTouched = fn; }
}

ライブデモ:https//plnkr.co/edit/imCJmCoJaeGQiUMcyBwz?p = Preview

更新

フォームコンポーネントで変更検出を使用する:

<ng2-input-select ngModel (ngModelChange)="selectBoxChanged($event)" label="b2" name="select2" [options]="testObject"></ng2-input-select>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Xamarinフォームでカスタムコントロールをフロートさせるにはどうすればよいですか?

分類Dev

Angularでカスタムフォームコントロールをリセットするにはどうすればよいですか?

分類Dev

ReactJs.NetのJSXファイル内でカスタムReactJsコンポーネントを使用するにはどうすればよいですか

分類Dev

XAMLで別のカスタムコントロール基本クラスを使用して、WPFでビュー内のカスタムコントロールをインスタンス化するにはどうすればよいですか?

分類Dev

カスタムコントロールを別のカスタムコントロールに適切に追加して、フォームにレンダリングするにはどうすればよいですか?

分類Dev

Objective-C / XCodeで、コマンドラインツールプロジェクト内のプロトコルを定義するカスタムCocoaフレームワークを使用するにはどうすればよいですか?

分類Dev

カスタムコントロール内のコントロールにフォーカスを設定するにはどうすればよいですか?

分類Dev

カスタムバリデーター内の2つのコントロールを比較するにはどうすればよいですか?

分類Dev

Python Turtleでカスタムローカルフォントを使用するにはどうすればよいですか?

分類Dev

PyCharmでカスタムフォントをシステムにインストールせずに使用するにはどうすればよいですか?

分類Dev

コンポーネントでカスタム検証アクセスフォームを使用するにはどうすればよいですか?

分類Dev

スタイルシートで非標準のカスタムフォントを使用するにはどうすればよいですか?

分類Dev

デフォルトのスフィンクステーマでカスタムCSSを使用するにはどうすればよいですか?

分類Dev

xaml内のC#で記述されたカスタムコントロールを継承するにはどうすればよいですか?

分類Dev

ListViewコントロールのフォーカスアイテムを適切に変更するにはどうすればよいですか?

分類Dev

ListViewコントロールのフォーカスアイテムを適切に変更するにはどうすればよいですか?

分類Dev

AngularDartのngModelでカスタムデータ型を使用するにはどうすればよいですか

分類Dev

カスタムUITableView更新コントロールを作成するにはどうすればよいですか?

分類Dev

複数のカスタムコントロールボタンリーフレットjsを追加するにはどうすればよいですか?

分類Dev

クロスプラットフォームの方法でコンソールにカラーで印刷するにはどうすればよいですか?

分類Dev

WIXでカスタムのデフォルトインストールフォルダを作成するにはどうすればよいですか?

分類Dev

GoGo Shellを使用してOSGiのデフォルトのコマンドスコープを変更し、カスタムコマンドにカスタムスコープを適用するにはどうすればよいですか?

分類Dev

カスタムコマンドのデフォルトのホットキーを設定するにはどうすればよいですか?

分類Dev

LLVMのカスタムフォークを使用するようにRustコンパイラを構築するにはどうすればよいですか?

分類Dev

カスタムフォントのみを使用するようにLCDをプログラムするにはどうすればよいですか?

分類Dev

自分のContentView(カスタムコントロール)でXamarin.Forms.Setterクラスを使用するにはどうすればよいですか?

分類Dev

フォーム内のすべてのコントロールの選択を解除するにはどうすればよいですか?

分類Dev

C#Windowsフォームのカスタムコントロールが頻繁に再描画されるため、CPU使用率が高くなるのを減らすにはどうすればよいですか?

分類Dev

スタートアップフォームのメソッドを使用して、子フォームから呼び出されたときにそのコントロールを有効にするにはどうすればよいですか?

Related 関連記事

  1. 1

    Xamarinフォームでカスタムコントロールをフロートさせるにはどうすればよいですか?

  2. 2

    Angularでカスタムフォームコントロールをリセットするにはどうすればよいですか?

  3. 3

    ReactJs.NetのJSXファイル内でカスタムReactJsコンポーネントを使用するにはどうすればよいですか

  4. 4

    XAMLで別のカスタムコントロール基本クラスを使用して、WPFでビュー内のカスタムコントロールをインスタンス化するにはどうすればよいですか?

  5. 5

    カスタムコントロールを別のカスタムコントロールに適切に追加して、フォームにレンダリングするにはどうすればよいですか?

  6. 6

    Objective-C / XCodeで、コマンドラインツールプロジェクト内のプロトコルを定義するカスタムCocoaフレームワークを使用するにはどうすればよいですか?

  7. 7

    カスタムコントロール内のコントロールにフォーカスを設定するにはどうすればよいですか?

  8. 8

    カスタムバリデーター内の2つのコントロールを比較するにはどうすればよいですか?

  9. 9

    Python Turtleでカスタムローカルフォントを使用するにはどうすればよいですか?

  10. 10

    PyCharmでカスタムフォントをシステムにインストールせずに使用するにはどうすればよいですか?

  11. 11

    コンポーネントでカスタム検証アクセスフォームを使用するにはどうすればよいですか?

  12. 12

    スタイルシートで非標準のカスタムフォントを使用するにはどうすればよいですか?

  13. 13

    デフォルトのスフィンクステーマでカスタムCSSを使用するにはどうすればよいですか?

  14. 14

    xaml内のC#で記述されたカスタムコントロールを継承するにはどうすればよいですか?

  15. 15

    ListViewコントロールのフォーカスアイテムを適切に変更するにはどうすればよいですか?

  16. 16

    ListViewコントロールのフォーカスアイテムを適切に変更するにはどうすればよいですか?

  17. 17

    AngularDartのngModelでカスタムデータ型を使用するにはどうすればよいですか

  18. 18

    カスタムUITableView更新コントロールを作成するにはどうすればよいですか?

  19. 19

    複数のカスタムコントロールボタンリーフレットjsを追加するにはどうすればよいですか?

  20. 20

    クロスプラットフォームの方法でコンソールにカラーで印刷するにはどうすればよいですか?

  21. 21

    WIXでカスタムのデフォルトインストールフォルダを作成するにはどうすればよいですか?

  22. 22

    GoGo Shellを使用してOSGiのデフォルトのコマンドスコープを変更し、カスタムコマンドにカスタムスコープを適用するにはどうすればよいですか?

  23. 23

    カスタムコマンドのデフォルトのホットキーを設定するにはどうすればよいですか?

  24. 24

    LLVMのカスタムフォークを使用するようにRustコンパイラを構築するにはどうすればよいですか?

  25. 25

    カスタムフォントのみを使用するようにLCDをプログラムするにはどうすればよいですか?

  26. 26

    自分のContentView(カスタムコントロール)でXamarin.Forms.Setterクラスを使用するにはどうすればよいですか?

  27. 27

    フォーム内のすべてのコントロールの選択を解除するにはどうすればよいですか?

  28. 28

    C#Windowsフォームのカスタムコントロールが頻繁に再描画されるため、CPU使用率が高くなるのを減らすにはどうすればよいですか?

  29. 29

    スタートアップフォームのメソッドを使用して、子フォームから呼び出されたときにそのコントロールを有効にするにはどうすればよいですか?

ホットタグ

アーカイブ