2017-08-12 7 views
0

私は、提出後にユーザーを作成するフォームをAngular 4プロジェクトに作成しました。入力フィールドで生成されたフォームの値をすべてユーザーにアタッチすることができましたが、複数選択内で値を取り込む方法がわかりません...下のコードは、私がユーザー-new.component.html Selectのどの部分がngModelを受け取っているのか分かりませんが、オプションがselectタグと通信する必要があると推測しています...私は確かではありません...私はmaterialize cssを使用していますが、selectタグはちょうどリンクのすぐ下のものオプションは私が見るものから救われますが、私はそれらを接続するために何もしていないので、彼らは私のユーザーと関連付けられていないことを知っています。選択タグを角度4で使用するフォームから複数の値オプションを保存する

すべてのオプションでidが必要なHTMLがあります。ここでも、すべてのリンクの入力フィールドと、私が使用していますmaterialzie CSSのページ参照 http://materializecss.com/forms.html

<h4>UserNewComponent</h4> 
<div class="row"> 
    <form materialize class="col s12" (submit)="create()"> 
    <div class="row"> 
     <div class="input-field col s12"> 
     <input id="username" name="username" type="text" class="validate" [(ngModel)]="newUser.username"> 
     <label for="username">USERNAME?</label> 
     </div> 
    </div> 
    <div class="row"> 
     <div class="input-field col s12"> 
     <textarea id="textarea1" name="motto" class="materialize-textarea" [(ngModel)]="newUser.motto"></textarea> 
     <label for="textarea1">YOUR MOTTO. THE REASON YOU ARE HERE?</label> 
     </div> 
    </div> 
    <div class="input-field col s12"> 
     <select multiple> 
     <option value="" disabled selected>GENRES THAT YOU FANCY</option> 
     <option value="acoustic">ACOUSTIC</option> 
     <option value="alternative_rock">ALTERNATIVE ROCK</option> 
     <option value="blues">BLUES</option> 
     <option value="classic_rock">CLASSIC ROCK</option> 
     <option value="classical">CLASSICAL</option> 
     <option value="comedy">COMEDY</option> 
     <option value="country">COUNTRY</option> 
     <option value="electronic">ELECTRONIC</option> 
     <option value="experiemntal">EXPERIMENTAL</option> 
     <option value="jazz">JAZZ</option> 
     <option value="metal">METAL</option> 
     <option value="pop">POP</option> 
     <option value="raggae">RAGGAE</option> 
     <option value="rap">RAP</option> 
     <option value="rock">ROCK</option> 
     <option value="r_and_b">R&B</option> 
     </select> 
     <label for="genres">GENRE(S)</label> 
    </div> 
    <div class="row"> 
     <div class="input-field col s12"> 
      <input id="password" name="password" type="password" class="validate" [(ngModel)]="newUser.password"> 
      <label for="password">PASSWORD</label> 
     </div> 
    </div> 
    <div class="row"> 
     <div class="input-field col s12"> 
     <input id="confirmPassword" name="confirmPassword" type="password" class="validate" [(ngModel)]="newUser.confirmPassword"> 
    <label for="confirmPassword">CONFIRM THIS</label> 
     </div> 
    </div> 
    <input type="submit" value="SIGN UP" class="waves-effect waves btn-large red col s12"> 
    </form> 
</div> 

としてこれは私の角4 user.ts

export class User { 
    constructor(
     public _id: number = Math.floor(Math.random()*100), 
     public username = "", 
     public motto: string = "", 
     public genres:string[] = [], 
     public password: string = "", 
     public confirmPassword: string = "", 
     public editable: boolean = false 
    ){} 
} 

ですが、私はジャンルにオプションを追加するべきarrary私は作成していますか?

は最後に、ここに私のユーザーnew.component.ts

import { User } from "./../user"; 
import { Component, OnInit, Output, EventEmitter } from '@angular/core'; 

@Component({ 
    selector: 'app-user-new', 
    templateUrl: './user-new.component.html', 
    styleUrls: ['./user-new.component.css'] 
}) 
export class UserNewComponent implements OnInit { 
    newUser = new User(); 
    @Output() createNewUserEvent = new EventEmitter(); 

    constructor() { } 

    ngOnInit() { 
    } 

    create(){ 
    // call server to save 
    this.createNewUserEvent.emit(this.newUser); 
    this.newUser = new User(); 
    } 

} 
+0

を選択した文字列の配列を持つことになります。何をお勧めしますか?これはどのようにして物となるのでしょうか?私は解決策を試すことからバウンスするつもりはない。私は私が行く道を行くそこにほとんどいるように感じる。おそらくそのルートを使用する理由は?私はこのメソッドを使って私が近づいているように感じる。 –

答えて

1

ちょうどあなたの選択フィールドにngModelを追加し、それが動作するはずです。私が選択するとhttps://angular-smhjoc.stackblitz.io

public selectedFields: string[] = []; 

インサイドHTML

<select multiple ([ngModel])="selectedFields" > 

を、それを試してみました、selectedFieldsは、私は同じ問題に遭遇すると思う

+0

ありがとうございます。私は近くにいると思う。私の** user.ts **ファイルの中に 'public selectedFields:string [] = []; ''を入れようとしていますか?それはselectedFieldsと呼ばれる私のユーザに空の配列を追加します...しかし、それは私の 'public genres:string [] = []、'が既に存在するものではありませんか?私は、選択肢の値がどんな出力にリンクされているかを見ていないと思います。あなたの提案したものと、他の 'ngModel'のようなものから、私の選択したフィールドは次のようになります:'