Я создал компонент, который называется боковой панелью. Этот компонент имеет, скажем, 2 входа, sideBarMode и sideBarSide. В app.component я добавляю этот компонент, как этот <sidebar [sideBarMode]="'sliding'" [sideBarSide]="'right'"></sidebar>
.
Когда я использую вышеупомянутый как один тег, он работает как положено. Тем не менее, когда я делаю что-то вроде
<div>
<sidebar [sideBarMode]="'sliding'" [sideBarSide]="'right'"></sidebar>
</div>
<div>
<sidebar [sideBarMode]="'docked'" [sideBarSide]="'left'"></sidebar>
</div>
Они отображаются, но с теми же классами, хотя, если я буду утешать протоколировать значения в ngOnInit, которые передаются, они отображаются правильно. Например, один div должен показывать скольжение как класс, а другой - как закрепленный. Вместо этого они отображаются как закрепленные.
Это шаблон HTML.
<div class="container-fluid">
<div [ngClass]="barSliding ? 'sliding' : 'sidebar-docked'">
<div class="row k-sidebar {{theme}}"
[ngClass]="[sidebarLeft ? 'position-left' : 'position-right', barSliding ? 'sliding-content-bar' : 'sidebar-docked', isDesktopWidth.value ? 'largeView' : 'mobileView']"
[@slideAnimation]= 'animationState'
[@dockMobileSidebar]= 'animationStateMobile'
[ngStyle]="{'width.px': isDesktopWidth.value ? sideBarWidth : '' }"
>
<div class="col-md-12">
<ng-container *ngIf="sidebarTemplate">
<ng-container *ngTemplateOutlet="sidebarTemplate">
</ng-container>
</ng-container>
<ng-container *ngIf="!sidebarTemplate">
<p>This is a paragraph, no template has been passed</p>
</ng-container>
</div>
</div>
</div>
Вот как я проверяю режим, если он закреплен или не в файле TS, и я вызываю этот метод из ngOnInit.
private checkSidebarMode(mode) {
console.log('checkSidebarMode ', mode);
if (mode === 'sliding') {
this.sidebarService.sideBarSliding.next(true);
console.log('checkSidebarMode ', this.sidebarService.sideBarSliding.getValue());
this.sideBarDock.next(false);
} else if (mode === 'docked' && this.sidebarService.innerWidth.getValue() <= 767) {
this.sideBarDock.next(false);
this.sidebarService.sideBarSliding.next(true);
} else if (mode === 'docked' && this.sidebarService.innerWidth.getValue() > 767) {
this.sideBarDock.next(true);
this.sidebarService.sideBarSliding.next(false);
this.sidebarService.animationState.next('docked');
console.log('checkSidebarMode ', this.sidebarService.sideBarSliding.getValue());
}
}
Как вы можете видеть, если он скользящий, я устанавливаю наблюдаемое в true, а затем в ngOninit назначаю это значение barSliding. , который используется в шаблоне HTML для определения имени класса.
Прикрепленный является правильным, однако скользящий получает свойства пристыкованного ... почему?
![enter image description here](https://i.stack.imgur.com/BwX5k.png)