angular - Angular 反应形式和隐藏元素
问题描述
我的 Angular 应用程序中有一个页面显示一个网格,在某些情况下,网格左侧可能有一个过滤器栏。过滤器的数据来自一个数据库。我们将网格 ID 传递给过滤条码,然后它会检索所有项目并构建过滤器列表。一切正常,除非网格没有过滤器,它仍然显示栏,但它是空的。
下面是我的 filterSidebar 模板代码,它处理它是否折叠
<!-- SideBar-->
<div class="{{filtersSidebarContainer.isSidebarCollapsed ? '' : 'col-md-2 pr-md-0'}}">
这是我的页面网格部分的代码
<!-- GRID -->
<div class="{{filtersSidebarContainer.isSidebarCollapsed ? 'col-md-12' : 'col-md-10 pl-md-0'}}" *ngIf="isGridLoaded">
我要做的是首先检查 filterConfigId 是否为空,如果是,请不要显示侧边栏并制作网格 col-md-12,因为没有栏我们不需要处理折叠。如果 filterConfigId 不为空,我们会正常显示。实现这一目标的最佳方法是什么?
解决方案
您的代码很好,我只建议在侧边栏上添加 ngIf 并在其上使用 ngClass 。
如果为 false,则 ngIf 根本不会渲染侧边栏,因此您会获得一点性能
<!-- SideBar-->
<div *ngIf="filterConfigId" [ngClass]="{'col-md-2 pr-md-0': !filtersSidebarContainer.isSidebarCollapsed}"
<!-- GRID -->
<div *ngIf="isGridLoaded" class="{{filtersSidebarContainer.isSidebarCollapsed ? 'col-md-12' : 'col-md-10 pl-md-0'}}" >
我没有为网格更改任何内容,因为它已经很好了……如果您在其上添加了 filterConfigId 条件,那么您将失去性能,因为 isSidebarCollapsed 已经完成了这项工作。
编辑
<!-- GRID -->
<div *ngIf="isGridLoaded" class="{{!filterConfigId || filtersSidebarContainer.isSidebarCollapsed ? 'col-md-12' : 'col-md-10 pl-md-0'}}" >
推荐阅读
- typescript - nb-select 没有清除 form.reset 上的选择
- python-3.x - __init__.py 导入模块中的 Python 错误
- azure-devtest-labs - 是否可以在 Azure Windows Server DSVM 上创建自定义的基于 Linux 的 Docker 映像
- arrays - 显示数组的特定部分?[SwiftUI]
- performance - 通过 std::vector 的矩阵乘法比 numpy 慢 10 倍
- r - 使用 R 过滤每列的最大值并输出为 df
- ms-access - Microsoft Access 查询条件:当我输入 ] 时,它不显示
- c - C 中实现定义的行为
- kubernetes - 我如何在这个 yaml 文件中动态设置 env 变量 MYSQL_ROOT_PASSWORD 的值,并且我想在创建 pod 时在运行时传递这个值
- python - 定义函数参数时返回语法错误