0

Я попытался заполнить загрузочный блок modal с информацией о соответствующих строках в таблице. Modal показывает штраф, но заполняется только данные первых строк нажатием любой из кнопок.Нажатие кнопки, показывающее одни и те же данные в angular2

Вот ссылка: https://plnkr.co/edit/3tl6S9CuGCv8VxXsOq7Y?p=preview

То, что я сделал это property binded значение data в pass @Input декоратора компонента, как вы можете в коде ниже (Пожалуйста, обратитесь к plunker для того, чтобы узнать больше о компонентах):

<div class="container"> 
    <h2>Basic Table</h2> 
    <p>The .table class adds basic styling (light padding and only horizontal dividers) to a table:</p>    
    <table class="table"> 
    <thead> 
     <tr> 
     <th>Name</th> 
     <th>Age</th> 
     <th>Email</th> 
     <th></th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr *ngFor='let data of datas'> 
     <td>{{data.name}}</td> 
     <td>{{data.age}}</td> 
     <td>{{data.email}}</td> 
     <td><detail-emp [pass]='data'></detail-emp></td> 
     </tr> 
    </tbody> 
    </table> 
    </div> 

Теперь то, что я считаю, что, когда я прохожу отдельные data из datas в *ngFor его компонента, соответствующие данные строки должны быть переданы. Но это не так. Модальный щелчок любой модальной кнопки показывает только данные первых строк.

Как я могу убедиться, что только данные из щелкнутой строки показаны в модальных и не всегда в данных первой строки.

Заранее спасибо.

ответ

2

попробовать это:

<!-- Button trigger modal --> 
<button type="button" class="btn btn-primary" data-toggle="modal" [attr.data-target]="'#exampleModal_' + pass.id "> 
    Show Data 
</button> 

<!-- Modal --> 
<div class="modal fade" id="exampleModal_{{pass.id}}" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> 
    <div class="modal-dialog" role="document"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
     <h5 class="modal-title" id="exampleModalLabel">Employee Detail</h5> 
     <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
      <span aria-hidden="true">&times;</span> 
     </button> 
     </div> 
     <div class="modal-body"> 
     <p>Name : {{pass.name}}</p> 
     <p>Age : {{pass.age}}</p> 
     <p>Email : {{pass.email}}</p> 
     </div> 
     <div class="modal-footer"> 
     <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> 
     </div> 
    </div> 
    </div> 
</div> 

проблема в ваших идентификаторами кнопки и модальный ..you необходимо установить другой идентификатор (exampleModal _ {{pass.id}}) ДЛЯ КАЖДОЙ модальных В каждой строке. И ТОГДА ПРИНИМАЙТЕ КНОПКУ КАЖДОГО ПОЛУЧЕННОГО ИДЕНТА ([attr.data-target] = "'# exampleModal_' + pass.id") .. вы были открыты всегда одинаково модально. Надеюсь, это поможет

+0

Работы вполне хорошо. Но как это получилось? Я также видел, что он показывал только идентификатор первой строки при нажатии любой кнопки. –

+0

причина, если вы не устанавливаете разные идентификаторы для каждого модала каждой строки. Кнопки всегда открывают только модальные с id = "exampleModal" –

+0

Большое спасибо. Это решило проблему. –