我创建了一个名为侧边栏的组件。该组件有 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 中的值,它们会正确显示。EG 一个 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());
}
}
如您所见,如果是滑动,我将 observable 设置为 true,然后在 ngOninit 中将该值分配给 barSliding,该值在 HTML 模板中用于确定类名。
停靠的是正确的,但是,滑动的正在获取停靠的属性……为什么?