- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我们按代码对 mat 表进行排序时,mat-sort 图标没有显示。如何通过单击按钮而不是单击 mat- 标题进行排序。
最佳答案
最初我认为问题很简单,但继续阅读文档和源代码,Angular Material 不提供此功能,可以通过订阅看到它不起作用:
ngAfterViewInit() {
this.sort.sortChange.subscribe((x) => {
console.log(x);
});
}
控制台响应将是:
{active: "name", direction: "asc"}
所以会触发列的id,并对其进行排序,但不会出现图标。
我提供了 2 种实现,您可以选择适合您的一种。
解决方案 1:
一个快速但有点麻烦的修复方法是强制显示所有图标,但意义不大,因为我们想专注于单个列。在 css 中通过这个来做到这一点:
::ng-deep .mat-sort-header-arrow {
opacity: 1 !important;
}
header 上的所有图标只会在具有mat-sort-header 属性的header 上显示,图标变化会在active column 上触发。
堆栈 Blitz :https://stackblitz.com/edit/mattable-with-custom-sort-etzkcy
解决方案 2:
这有点 hacky,所以为了触发图标上的动画,我们需要单击标题。因此,我从 mat-header-cell 上的组件调用了一个点击事件,但是 mat-header-cell 不可点击,所以我将列名称包装在一个 div 中,以模拟点击
<mat-header-cell *matHeaderCellDef mat-sort-header>
<div #position>Position</div>
</mat-header-cell>
在组件中,我们需要为我们想要模拟点击的所有显示列创建一个 viewchildren:
@ViewChild('position') position:ElementRef;
@ViewChild('name') name:ElementRef;
在你的方法 sortTest(val) 中,我开始变得更老套了,所以我切换了作为参数传递给 val 的字符串的值,以调用右标题上的右键单击,因为 div 的名称和列的比例为 1:1
switch(val) {
case "name": {
this.name.nativeElement.click()
this.name.nativeElement.click()
break;
}
case "position": {
this.position.nativeElement.click()
this.position.nativeElement.click()
break;
}
}
我为什么打电话
this.position.nativeElement.click()
2次?因为据我了解
this.sort.active = val;
算作一次点击但不显示图标,所以我们会按照之前的顺序递增递减返回,以避免我调用它2次时点击是奇数。
在所有这些骇人听闻的代码之后,我发出了排序
this.sort.active = val;
this.dataSource.sort = this.sort;
const sortState: Sort = {active: val, direction: this.sort.direction === 'asc' ? 'desc' : 'asc'};
this.sort.direction = sortState.direction;
this.sort.sortChange.emit(sortState);
我没有找到更好的解决方案,甚至在网上、文档和 Angular Material 的源代码上进行了搜索。我发现了一个没有任何回应的问题。
此解决方案的 Stackblitz:https://stackblitz.com/edit/mattable-with-custom-sort-emqkbs
关于 Angular 垫表 : - Sort icon missing on custom sort,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56680259/
我有一个 mat-select 元素,其中包含固定数量的 mat-option 元素。要查看最后一个元素,我必须滚动列表。是否可以扩大区域以便我无需滚动即可看到最后一个元素?
我想填充一些百分比值,以便小数位前始终有 3 个单位。使用整数我可以使用 '%03d' - 是否有等效的 float ? '%.3f' 适用于小数点后,但 '%03f' 什么都不做。 最佳答案 '%0
我有一个 vector Mat 文件,我想将它存储在 txt 文件中。每个 mat 文件的大小为 1x4500,我总共有 5000 个 vector 。我试图用上面的代码存储在 txtfile 中:
我需要一个 Mat 对象,其中每个元素都是一个类型为 double 且大小为 15 的 vector 。 我试过了 Mat seq(rownum,colnum,Vec); 但这给了我错误: expec
我想将我的 OpenCV Mat 转换为 Matlab .mat 文件,Matlab 可以轻松读取该文件。我不想使用Mex函数直接将数据提供给matlab,因为我想将数据保存在硬盘上。 有可用的 cv
我正在使用 当条件为真时,我希望有一些具有粗体样式的选项。 目前,下拉选项中的选项为粗体,但一旦选择该选项,该样式将不会应用于文本字段中的选择。 如何在选择后将样式应用于文本字段? 这是一个代码示例:
我在手机上运行我的应用程序,同时使用 MAT 进行调试。在我尝试在 Eclipse 中转储 HPROF 文件后,出现错误: 无法将 hprof 数据保存到临时文件中。设备上没有剩余空间。 我已经对此进
我有一个 CV_32F 类型的垫子 A 和一个二进制值为 0 和 255 的掩码 M。例如, A = [0.1 0.2; 0.3 0.4] M = [1 0 ; 0 0 ] 我想得到 A
我在我的 Angular 5 应用程序中使用@angular/material。我使用的 Angular Material 版本是 5.0.2。我正在使用@angular/animations 5.1
我想根据任意数据类型、行维度、列维度和 channel 维度的一维数据数组构建一个 3 channel 矩阵。在我的示例中,我有一个 1x12 double 组数据,我想将其转换为 2x2x3 Ope
我正在尝试使用 C# 中的 BouncycaSTLe 解密河豚加密字符串。 我能够轻松地加密和解密我自己的字符串,但不幸的是,我必须解密由另一个系统生成的字符串。 我能够使用以下命令使用 C#/Bou
我想在 Android Opencv c++ 库中获取绝对矩阵。我正在使用 abs(Mat m) 函数,但它会返回 MatExpr 对象。你知道如何只用矩阵的绝对值得到 Mat 对象吗? Ma
在 OpenCV 中,我可以将 RGB 1920 x 1080 垫乘以 3 x 3 垫以更改源垫的颜色组成。一旦我的源垫形状正确,我就可以使用“*”运算符来执行乘法。使用 cv::gpu::GpuMa
给定vector > A_STL , 我希望它被转换成 arma::mat A . 最佳答案 一种简单的方法是将 vector 矩阵的 vector 展平为一维 vector 。因此,您可以使用 ma
以下代码从文件中读取图像到 cv::Mat目的。 #include #include cv::Mat load_image(std::string img_path) { cv::Mat im
我有一个 AVCaptureSession,它输出带有 BGRA 像素的 CMSampleBuffer。我正在尝试仅从 BGR 创建 Mat 对象,以最有效的方式,使用数据 pointers。 CV
我正在尝试诊断我的 Android 应用程序中的内存问题。我转储了一个 HPROF 文件并将其加载到 Eclipse MAT 工具中(参见 How to analyze memory using an
我是一名优秀的程序员,十分优秀!