почему ngb- bootstrap Кнопка свертывания переключателя управления сворачивает весь динамически сгенерированный набор карт? - PullRequest
0 голосов
/ 17 марта 2020

Я использую ngb-bootstrap контроль коллапса в моем приложении angular 9.

Я поместил ngb-bootstrap элемент управления коллапсом в карту bootstrap, и, как видно из приведенного ниже кода, будет создано несколько карт, и я связал кнопку свертывания в заголовке карты с телом карты. этой конкретной карты, поэтому при нажатии кнопки только эта карта разрушается, а не весь набор карт. я установил атрибут aria-controls с id из ngbCollapse div, как показано в следующем коде. Но проблема, с которой я сталкиваюсь, заключается в том, что, когда я нажимаю кнопку, весь набор карт рушится

<div class="animated fadeIn" style="margin-left: 2%;margin-right: 2%;margin-top: 2%;" id="qgroup-div-g{{ei}}" *ngFor="let g of this.s?.MyQuestionGroup;let ei=index;">
    <div class="row">
        <div class="col-lg-12">
          <div class="card">
            <div class="card-header">
              <!-- <i class="fa fa-align-justify"></i> Combined All Table -->
              <div class="row" style="position: relative;">
                <div class="col-6 col-sm-4 col-md-2 col-xl mb-3 mb-xl-0">      
                    <h5 style="text-align: left;">
                        {{g?.QuestionGroupName}} 
                        <button type="button" 
                                class="btn btn-success mr-1" 
                                style="position:absolute;right: 10px;top:5px;"  
                                (click)="isCollapsed = !isCollapsed"
                                [attr.aria-expanded]="!isCollapsed" 
                                attr.aria-controls="qgroup-collapse-wrapper-g{{ei}}">
                            <i class="fa fa-align-justify"></i>
                            </button>

                    </h5>             


                </div>
              </div>    
            </div>

            <div [ngbCollapse]="isCollapsed" id="qgroup-collapse-wrapper-g{{ei}}">
                <div class="card-body">
                    <div class="table-responsive">
                            sample text 1
                    </div>
                </div>
            </div>

        </div>
    </div>
    <!--/.col-->
  </div>
</div>

1 Ответ

1 голос
/ 17 марта 2020

Это происходит потому, что isCollapse представляет всю карту как отдельную личность. Вам нужно изменить массив логических значений для представления каждой карты.

Пример:

    this.MyQuestionGroup = [
  {
    QuestionGroupName: "GroupName1"
  },
        {
    QuestionGroupName: "GroupName2"
  },
        {
    QuestionGroupName: "GroupName3"
  }
];
for(let i=0; i<this.MyQuestionGroup.length; i++){
  this.isCollapsed.push(false);
}

, затем в вашем html:

  (click)="isCollapsed[ei] = !isCollapsed[ei]"
                            [attr.aria-expanded]="!isCollapsed[ei]" 


        <div [ngbCollapse]="isCollapsed[ei]">

        </div>

И это рабочий пример в stackblitz свернуть карту

...