изменить цвет панели, когда установлен флажок угловой 4 - PullRequest
0 голосов
/ 01 марта 2019

Я попробовал все, но не могу получить желаемый ответ.Как я могу сделать всю строку кликабельной, а также как изменить цвет строки, когда я нажимаю флажок?

Вот мой HTML-файл, который я пробовал

<section class="others" >
<div class="sub-header">Others</div>
<p class="text-center" *ngIf="otherTests.length === 0">No Tests Available</p>
<app-custom-accordion [closeOthers]="true">
<ngb-panel [disabled]="true" *ngFor="let testPanel of otherTests let i = index;" id="{{testPanel.Id}}" [title]="testPanel.Name">
  <ng-template ngbPanelTitle>
    <div class="action-items" [ngStyle]="{'background-color': i.checked == true? '#00B7A8' : 'white'}">
      <span class="material-icons fav" [ngStyle]="{'background-color': i.checked == true? '#00B7A8' : 'white'}" [class.favorited]="testPanel.Favorite" (click)="onFavoriteClick(testPanel)"></span>
      <span class="icon-set" [ngClass]="{'same-day-2x': isSameDay(testPanel.Code), 'next-day-2x': isNextDay(testPanel.Code)}"></span>
      <label class="custom-control custom-checkbox">
          <input #i
            type="checkbox"
            class="custom-control-input"
            [name]="testPanel.Id + '-' + testPanel.Moniker"
            [ngModel]="panelIds.indexOf(testPanel.Id) > -1"
            (ngModelChange)="onPanelCheckboxUpdate($event, testPanel)"
            [id]="testPanel.Id + '-' + testPanel.Moniker">
          <span class="custom-control-indicator"></span>
      </label>
       </div>
      </ng-template>
    </ngb-panel>
  </app-custom-accordion>
 </section>

и что я получаю от этого enter image description here

Вот мой файл Ts для изменения флажка

onPanelCheckboxUpdate($event: boolean, panel: TestOrderPanel) {
this.checked = $event
let testPanelIds = panel.Tests.map(test => test.Id);
// Wipe any duplicates
this.panelIds = this.panelIds.filter(
  panelId => panel.Id !== panelId && testPanelIds.indexOf(panelId) === -1
);
this.selectedPanels = this.selectedPanels.filter(
  selectedPanel =>
    panel.Id !== selectedPanel.Id &&
    testPanelIds.indexOf(selectedPanel.Id) === -1
);

if ($event) {
  this.panelIds.push(panel.Id);
  this.selectedPanels.push(panel);
   }
  this.updateSession();
}

Это мой компонент app-custom-accordion

 <div class="card">
 <ng-template ngFor let-panel [ngForOf]="panels">
<div role="tab" id="{{panel.id}}-header" [class]="'card-header ' + 
 (panel.type ? 'card-' + panel.type: type ? 'card-' + type : '')"
  [class.active]="isOpen(panel.id)">
  <a href (click)="!!toggle(panel.id)" [attr.tabindex]=" . 
 (panel.disabled 
  ? '-1' : null)" [attr.aria-expanded]="isOpen(panel.id)"
    [attr.aria-controls]="(isOpen(panel.id) ? panel.id : null)" 
 [attr.aria-disabled]="panel.disabled">{{panel.title}}</a>
  <ng-template [ngTemplateOutlet]="panel.titleTpl?.templateRef"></ng- 
  template>
  <!-- expansion arrows -->
  <div *ngIf="arrowExpand" (click)="toggle(panel.id)" [attr.aria- 
  expanded]="isOpen(panel.id)">
    <span class="material-icons expand"></span>
  </div>

 </div>
 <div id="{{panel.id}}" role="tabpanel" [attr.aria-labelledby]="panel.id + '-header'" class="card-block" *ngIf="isOpen(panel.id) && panel.contentTpl">
  <ng-template [ngTemplateOutlet]="panel.contentTpl?.templateRef"></ng-template>
      </div>
    </ng-template>
  </div>

Как изменить цвет всей строки, когда установлен флажок, например, когда флажок установлен, вся строка должна быть темной или любой другой, а если флажок снят,перейти на предыдущий цвет т.е. белый может кто-нибудь помочь?спасибо

1 Ответ

0 голосов
/ 01 марта 2019
<div class="action-items" [ngStyle]="{'background-color': i.checked == true? '#00B7A8' : 'white'}">

i - это индекс, определяемый как:

<ngb-panel ... *ngFor="let testPanel of otherTests let i = index;" ...>

Так что i.checked не определено, поэтому i.checked == true всегда ложно.

Вы не показали, что такое testPanel или otherTests, но я предполагаю, что код, который вам нужен, больше похож на:

[ngStyle]="{'background-color': testPanel.checked? '#00B7A8' : 'white'}"

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

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