私はブートストラップグリッドを持っていて、いくつかのセルにはブートストラップのドロップダウンコンポーネントが表示されるはずです。ここでは、コードは次のとおりです。ブートストラップドロップダウンリストがbsグリッドで角2で開かない
<div class="table-responsive">
<table class="table">
<thead>
...
</thead>
<tbody>
<tr *ngFor="let item of data">
<td *ngFor="let col of columns">
<!-- other cells -->
<div *ngIf='col.type=="dropdown"' class="dropdown">
<!-- This dropdown
component
is not opened
inside my grid-->
<!--Dropdown Code starts-->
<div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true"
aria-expanded="true">
Dropdown
<span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">Separated link</a></li>
</ul>
</div>
<!--Dropdown Code ends-->
</td>
</tr>
</tbody>
</table>
</div>
</div>
そして、それはそのように示されている:私は、ドロップダウンボタンをクリックした場合
しかし、彼らのリストが見えるようになりません。私のコンポーネントのどこか他の場所で同じコードを使用すると、正しく動作しています。
エラーメッセージが表示されず、ブートストラップが正しくロードされています(他のすべてのコンポーネントも機能します)。これで間違っているのは何ですか?
'dropdown()'関数は、あなたが言ったように問題を解決します。ライフサイクルのフックをバインドする必要があると思っていましたが、わかりません。現在、 'ngDoCheck'関数内で' dropdown() '関数を使用しましたが、問題を解決しましたが、今問題はそれがどれだけ効率的なのでしょうか?いくつかの情報を提供できますか?あなたの質問を受け入れることができるように、私のために働いていた答えを編集することができます。ありがとう! – Asqan
私は完全にあなたがドロップアウトのための既存の解決策を検討すべきであることに完全に同意します。 –
このjQuery関数の問題は、ページ上に提供されたcssセレクタを持つすべての項目に 'onclick'をバインドすることです。各ドロップダウンに一意のIDを割り当てることで回避することができます。または、行のリストが変更されたときにのみ選択ボックスを再初期化します...より良い解決策はselectboxのディレクティブを作成し、 'ViewChild'を使用して' dropdown()テンプレート... –