forms
  • angular
  • typescript
  • angular4-forms
  • 2017-10-30 25 views 0 likes 
    0

    入力フィールドの値を最初のAngularフォームで取得しようとしていますが、それは常に定義されていません。私はFormsModuleを正しくインポートしています。フォームオブジェクトをうまく参照することができます。そのため、明らかに何かが欠けているはずです。角型入力値が定義されていません

    マイコンポーネントのHTML

    <form #searchValue='ngForm' class="" (ngSubmit)='submitSearch(searchValue)'> 
        <div> 
        <input type="text" name="q" placeholder="search"> 
        </div> 
    </form> 
    

    そして、私のコンポーネントのts法(短縮)

    import { Component, OnInit } from '@angular/core'; 
    import { FormsModule } from '@angular/forms'; 
    
    @Component({ 
        selector: 'google-search', 
        templateUrl: './google.component.html', 
        styleUrls: ['./google.component.css'] 
    }) 
    
    export class GoogleComponent implements OnInit { 
    
        constructor() { } 
    
        ngOnInit() { 
    
        } 
    
        submitSearch(formData) { 
        console.log(this.searching); 
        console.log(formData.value.q);  
        } 
    } 
    

    任意のアイデアこれはなぜか?

    +0

    HTMLコンポーネント

    <form #searchValue='ngForm' class="some-css-class" (ngSubmit)='submitSearch()'> <div> <input type="text" name="q" [(ngModel)]="searchValue" placeholder="search"> <input type="submit" name="btn" placeholder="Submit"> </div> </form> 

    ? – JuanDM

    答えて

    1

    あなたは、これがフォームのコントロールのいずれかであることを知っていますので、角ngModelで入力をマークする必要があります。

    <input type="text" ngModel name="q" placeholder="search"> 
    

    それとも、あなたのコンポーネントで最初の変数を定義し、次にを経由して、それに入力をバインドすることができます[(ngModel)]ディレクティブ:

    export class GoogleComponent implements OnInit { 
        q: string; 
    
        submitSearch() { 
        console.log(this.q); 
        } 
    } 
    
    <form class="" (ngSubmit)='submitSearch()'> 
        <div> 
        <input type="text" name="q" [(ngModel)]="q" placeholder="search"> 
        </div> 
    </form> 
    

    一つの方法バインディングあなただけの入力から値を読みたい場合は(ちょうど[ngModel]="q")十分である可能性があります。

    +0

    私はあなたに2番目のオプションを試してみました。これは、 'q'変数が宣言されていない部分だったと宣言しています。あなたの時間と簡単な説明に感謝します。 – Draxy

    1

    このようないくつかが動作するはずです。..

    はたぶん、あなたはモデルbindingformsについて読みたいです。 component.tsフォームを提出されたhtml要素を入れている

    import { Component, OnInit } from '@angular/core'; 
    import { FormsModule } from '@angular/forms'; 
    
    @Component({ 
        selector: 'google-search', 
        templateUrl: './google.component.html', 
        styleUrls: ['./google.component.css'] 
    }) 
    
    export class GoogleComponent implements OnInit { 
    
        searchValue: string = ''; 
    
        constructor() { } 
    
        ngOnInit() { } 
    
        submitSearch() { 
        console.log(this.searchValue); 
        } 
    } 
    
    関連する問題