2016-09-01 7 views
1

角2、RC 5を使用して、新しいモデルオブジェクトを作成するためのフォームを作成しています。ドロップダウンにはモデルのオプションが表示されます。コードをトランジリエートすると、追加の空白<オプション>がドロップダウンに表示されますが、実際にはDOMでは作成されません。これは、リストの一番上に幽霊<オプション>があるかのようです。角2、RC5 - フォームのドロップダウンに「ゴースト」オプションが追加されました

次の例では、 "id"と "name"のパラメータを持つExampleという名前のモデルを作成しました。

import {Component} from '@angular/core'; 
import {Example} from './example-model'; 

@Component({ 
    selector: 'my-app', 
    template: ` 
    <form> 
     <h2>Dropdown</h2> 

     <select name="name" [(ngModel)]="example.name"> 
     <option [value]="">Choose one</option> 
     <option *ngFor="let option of dropdown" [value]="option.val"> 
      {{option.name}} 
     </option> 
     </select> 
    </form> 
    `, 
}) 

export class AppComponent { 
    public example: Example; 
    public dropdown: {val: number, name: string}[] = []; 

    public ngOnInit(): void { 
    this.example = new Example(); 
    this.dropdown = this._getDropdownValues(); 
    } 

    private _getDropdownValues(): {val: number, name: string}[] { 
    return [ 
     {val: 10, name: "Name #1"}, 
     {val: 20, name: "Name #2"}, 
     {val: 30, name: "Name #3"} 
    ]; 
    } 
} 

は、なぜ私は私のドロップダウンにゴースト<オプション>を取得していますか?

完全な例はPlunkrです。残念ながら問題を解決する方法についてのコメントを提出しました。

答えて

0

最初のオプションに値を割り当ててください。すなわち、それは、この行によって引き起こされています。この

<option [value]="XX">Choose one</option> 
+0

を選択しておきたいならば、あなたはこのような何かを探していると思います。これはどのように機能しますか? – ebakunin

+0

「ゴースト」オプションを消すには、この値を割り当てる必要があります。これをあなたのコードで解釈し、そこに置かれた "XX"などを空白の値に関連付けます。 – TheCount

0

にこの

<option [value]="">Choose one</option> 

を変更。

<option [value]="">Choose one</option> 

私は、タグ内のテキスト値が最初に表示されない理由はよく分からないとき(おそらくモデルがロードされる前に、select要素を示す?loadイベントのための)ページがロードされています're codeはこのタグを静的にselectに書き込み、リストから追加のオプションタグを動的に追加します。この線を削除すると、「ファントム」の値が消え、クリックすると目的のテキスト値が表示されます。

私は、あなたが「のいずれかを選択します」オプションは、ブランク値を持っている必要があります。この場合、タグ

<option disabled="disabled">Choose one</option> 
+0

私はあなたのアプローチを試みましたが、残念ながらうまくいきません。他に提案はありますか?あなたが提案した変更を示すためにPlunkrを更新しました。 – ebakunin

+0

"仕事"が意味することによって異なります。私はこの要素がどこから来ているのかを指摘していました。それはコード内で指定されているため、「期待」しています。なぜそれがレンダリングされなかったかに関しては、私の疑惑は正しかった。空の値はモデル属性によって引き起こされた。 selectタグのこの部分がないと、塗りつぶされた値が読み込み時にレンダリングされます。私はあなたのplunkrを編集しました http://plnkr.co/edit/6enlftqXAZJrSHcVv0q1?p=preview – Dmaoc

+0