我想按图标更改文本,要按图标更改文本,我必须做什么?
我必须找到这样的结果:
file.ts:
ngAfterViewInit() {
this.current.paginator = this.paginator;
const lastBtn = this.el.nativeElement.querySelector(
'.mat-paginator-navigation-last'
);
if (lastBtn) {
lastBtn.innerHTML = 'Last';
}
const firstBtn = this.el.nativeElement.querySelector(
'.mat-paginator-navigation-first'
);
if (firstBtn) {
firstBtn.innerHTML = 'First';
}
}
2条答案
按热度按时间yqyhoc1h1#
如果要更改按钮图标,可以执行此操作。
为此,我们需要修改
mat-paginator
生成的html。下面的指令执行此操作:
现在说说原因。
Directive
:我们创建了attribute指令来调整MatPaginator
的图标。当我们只想编辑html的东西时,推荐使用Attribute Directives。AfterViewInit
:我们只能在MatPaginator
html完全初始化后编辑它的内容。AfterViewInit生命周期钩子是最适合这个任务的钩子。ElementRef
:它提供对放置指令的HTML代码的访问。Renderer2
:recommended实用程序,用于安全地修改HTML元素。它是ngStyle
和ngClass
等指令用作场景的基础。我们可以通过直接编辑DOM元素来达到相同的目的,但如果编辑不正确,可能会产生错误。replaceSvgWithIcon
方法来执行实际的更改。2唯一的例外是setPreviousIcon
方法,因为没有与您想要的匹配的图标。3为了实现您想要的外观,我旋转下一个图标。replaceSvgWithIcon
:首先从按钮中移除<svg>...</svg>
标记。这是包含图标实际图像的标记,按钮元素中剩余的HTML用于其他内容,如涟漪。一旦元素被移除,我们将创建一个新的HTMLSpanElement
。我们将在此元素上设置material-icons
类(这样它就可以使用材质图标),以及图标的值。完成后,我们把它附加到提供的按钮上并返回(如果我们想修改一些非通用的东西,我们就返回元素)。要使用此指令,我们只需调用分页器的html选择器:
上述情况适用于Angular 15。对于以前的版本,只需从选择器中删除“-mdc”,如下所示:
'.mat-mdc-paginator-navigation-first'
改为“Map分页器导航优先”;'.mat-mdc-paginator-navigation-previous'
至'.mat-paginator-navigation-previous'
;'.mat-mdc-paginator-navigation-next'
至'.mat-paginator-navigation-next'
;'.mat-mdc-paginator-navigation-last'
至'.mat-paginator-navigation-last'
;bkkx9g8r2#
您也可以只使用.css来获取它
在样式. css中