【问题标题】:Angular 8 ng-bootstrap 5 table sorting not workingAngular 8 ng-bootstrap 5 表格排序不起作用
【发布时间】:2020-06-19 06:26:29
【问题描述】:

我有一个使用 .NET Core 3.1 和 Angular 8 ("@angular/core": "8.2.12") 的项目。
从 Web API 获取和订阅数据的部分运行良好。
现在我正在尝试执行可排序、分页和过滤表,因此我从this question 中找到了ng-bootstrapworking code

设置完成后,我在 PowerShell 中运行 install cmd:

ng add @ng-bootstrap/ng-bootstrap@5.3.1

将此添加到我的 app.module.ts:

import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
@NgModule({
  imports: [
    NgbModule
  ]

然后我尝试按照工作代码向我的表格添加排序功能,但我无法单击标题对数据进行排序。

所以我将这些文件从工作代码复制到我的项目中:

  • countries.ts
  • country.service.ts
  • country.ts
  • sortable.directive.ts
  • table-complete.html
  • table-complete.ts

并在我的 app.module.ts 中为 table-complete.html 页面设置路由和声明:

@NgModule({
  declarations: [
    NgbdTableComponent
  ],
  providers: [AppComponent, NgbdTableComponent, NgbdSortableHeader]

(我将类名从 NgbdTableComplete 更改为 NgbdTableComponent)


截图如下: The pagination and filtering functions are working well.

但我仍然无法单击表格标题对表格进行排序。
在这个过程中我错过了什么吗?

【问题讨论】:

  • 您能否提供一个可重现的最小示例来说明您在 stackblitz 中所做的事情?
  • stackblitz 我尝试构建一个示例,但它的外观不同。结果,我仍然无法单击表头对数据进行排序。我感到困惑的是代码与working code 相同,唯一的区别是角度版本。但是我查了update guide,好像和版本没有关系。

标签: angular sorting html-table angular8 ng-bootstrap


【解决方案1】:
  • 组件/指令/管道应添加到 app.module 的声明数组中,如下所示

     @NgModule({
     declarations: [
     AppComponent, 
     NgbdTableComponent, 
     NgbdSortableHeader
     ],
     imports:[BrowserModule, 
              HttpClientModule, 
              NgbModule
              ],
     providers: [] 
     })
    
  • working code (styles.css) 中包含下面的 css 以显示排序箭头

    th[sortable] 
      {
       cursor: pointer;
       user-select: none;
       -webkit-user-select: none;
       }
    
     th[sortable].desc:before, th[sortable].asc:before {
       content: '';
       display: block;
       background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAmxJREFUeAHtmksrRVEUx72fH8CIGQNJkpGUUmakDEiZSJRIZsRQmCkTJRmZmJgQE0kpX0D5DJKJgff7v+ru2u3O3vvc67TOvsdatdrnnP1Y///v7HvvubdbUiIhBISAEBACQkAICAEhIAQ4CXSh2DnyDfmCPEG2Iv9F9MPlM/LHyAecdyMzHYNwR3fdNK/OH9HXl1UCozD24TCvILxizEDWIEzA0FcM8woCgRrJCoS5PIwrANQSMAJX1LEI9bqpQo4JYNFFKRSvIgsxHDVnqZgIkPnNBM0rIGtYk9YOOsqgbgepRCfdbmFtqhFkVEDVPjJp0+Z6e6hRHhqBKgg6ZDCvYBygVmUoEGoh5JTRvIJwhJo1aUOoh4CLPMyvxxi7EWOMgnCGsXXI1GIXlZUYX7ucU+kbR8NW8lh3O7cue0Pk32MKndfUxQFAwxdirk3fHappAnc0oqDPzDfGTBrCfHP04dM4oTV8cxr0SVzH9FF07xD3ib6xCDE+M+aUcVygtWzzbtGX2rPBrEUYfecfQkaFzYi6HjVnGBdtL7epqAlc1+jRdAap74RrnPc4BCijttY2tRcdN0g17w7HqZrXhdJTYAuS3hd8z+vKgK3V1zWPae0mZDMykadBn1hTQBLnZNwVrJpSe/NwEeDsEwCctEOsJTsgxLvCqUl2ACftEGvJDgjxrnBqkh3ASTvEWrIDQrwrnJpkB3DSDrGW7IAQ7wqnJtkBnLRztejXXVu4+mxz/nQ9jR1w5VB86ejLTFcnDwhzV+F6T+CHZlx6THSjn76eyyBIOPHyDakhBAQAkJACAgBISAEhIAQYCLwC8JxpAmsEGt6AAAAAElFTkSuQmCC') no-repeat;
       background-size: 22px;
       width: 22px;
       height: 22px;
       float: left;
       margin-left: -22px;
     }
    
     th[sortable].desc:before {
       transform: rotate(180deg);
       -ms-transform: rotate(180deg);
     }
    

【讨论】:

  • 你是对的!将 NgbdSortableHeader 添加到声明数组后,一切正常!谢谢!
  • 很高兴它有帮助!
猜你喜欢
  • 2014-05-05
  • 2020-11-18
  • 2018-12-07
  • 1970-01-01
  • 2023-03-16
  • 2018-08-04
  • 1970-01-01
  • 1970-01-01
  • 2019-11-01
相关资源
最近更新 更多