2017-05-30 17 views
0

あなたはうまくやってくれれば幸いです。ここでは、フロントエンドの開発から始まります。質問が愚かであるか、コードがひどいように見える場合はごめんなさい(修正は非常に歓迎されます)。Datatable内のドロップダウンはバインドされたオプションを事前選択しません[PrimeNG]

私はDataTableの内部ドロップダウン要素を持っている:

<p-dataTable [value]="Items"> 
    <p-column field="Destination" header="Destinos"> 
     <ng-template let-col let-item="rowData" pTemplate="body"> 
      <p-dropdown [ngModelOptions]="{standalone: true}" [(ngModel)]="item[col.field]" appendTo="body" [options]="Destinations"> 
      </p-dropdown> 
     </ng-template> 
    </p-column> 

    <!-- more columns--> 

</p-dataTable> 

目的地はここにロードされます。

this.destinationService.getDestinations(). 
     subscribe((res: Array<Destination>) => { 
      res.forEach(element => { 
       this.Destinations.push({ label: element.Name, value: element.id }); 
      }); 
     }); 

送信ボタンを押したとき、それはJSONを生成します。そして、この "Creation"テンプレートは魅力的なものです。保存されるオブジェクトは推定値であり、estimate.Providerには正しい属性値があります。これはselect/option 'value'から取られた数値ですので、バインディングはここで完璧です。

「EDIT」テンプレートにこの推定値をロードすると、it hasn't nothing selectedが含まれているため、すべてが「Destinations」以外のドロップダウンリストをロードします。

私は、estimate.Providerが2の場合、 'Value'が2になる 'auto-select'オプションは使用しないでください。少なくとも、ネイティブのドロップダウンがどのように機能するか(値が正しく読み込まれているかどうかをチェックします。 さらに、primengの​​ドロップダウンはデフォルトでドロップダウンにロードされた最初の値を選択するので、デフォルトとしての空の値は奇妙だと思います。それから私がそれをクリックすると、それは完全に動作します。 displays the options as it should do

私は奇妙なことが起こっていると信じて、何か重要なことを逃しています。

私は何をすべきかわかりません。ありがとうございました

答えて

0

私の問題は、親子コンポーネントで作業していて、Datatableの「データソース」(子コンポーネントにある)がその値をInput()、問題は、DBからの宛先をロードしたサービスが入力後で実行されたためであり、宛先が空のときにテンプレートがデータ可能にレンダリングされたということでした。私はそれを子供の中に読み込むのではなく、親から子へと「送信する」ことを決めました。

希望します。

関連する問題