【发布时间】:2021-03-19 16:57:35
【问题描述】:
我正在使用属性innerHTML 来编辑标签的内部html,在这个<td></td> 的例子中,但它可以是任何东西:
<td *matCellDef="let order" mat-cell [innerHTML]="order.statusForInterval | statusIcon"></td>
order.statusForInterval 是一个数字,你可以看到我调用管道statusIcon 返回一个字符串,然后绑定到innerHTML。管道如下所示:
@Pipe({name: 'statusIcon'})
export class StatusIconPipe implements PipeTransform {
transform(statusId: number) {
switch (statusId) {
case 0:
return `<img class="status-icon" src="assets/svg/status-icon/open_icon.svg" alt="up" matTooltip="Open">`;
case 1:
return `<img class="status-icon" src="assets/svg/status-icon/progress_icon.svg" alt="up" matTooltip="Progress">`;
case 2:
return `<img class="status-icon" src="assets/svg/status-icon/checked_icon.svg" alt="up" matTooltip="Checked">`;
case 3:
return `<img class="status-icon" src="assets/svg/status-icon/booked_icon.svg" alt="up" matTooltip="Booked">`;
case 4:
return `<img class="status-icon" src="assets/svg/status-icon/error_icon.svg" alt="up" matTooltip="Error">`;
}
}
}
因此,根据数字,我返回一个包含img 标记的字符串,然后将其绑定到innerHTML。
一切都按预期工作。我唯一的问题是当我使用innerHTML 属性时工具提示不起作用。如果我以这种方式设置 innerHTML,则属性 matTooltip="Open" 将被忽略。
有什么方法可以让工具提示使用innerHTML 工作?
【问题讨论】:
-
为什么要更新
td,而不是在您的模板中已经有一个带有该类的img元素,并设置its 值?另外,不要对所有四个图像都使用alt="up":alt 属性用于描述图像所代表的内容,以便辅助工具可以向有部分视力或没有视力的用户描述图像。 -
你可以看看这个并在你的
<td>stackoverflow.com/questions/34504203/…中添加一个<span [outerHtml]>
标签: javascript html angular typescript