typescript - 如何使用管道将html传递给角度模板?
问题描述
我试图通过星垫图标来显示评级,但我得到的只是字符串而不是 HTML。
管道
import { Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
@Pipe({ name: 'rating' })
export class RatingPipe implements PipeTransform {
constructor(private sanitizer: DomSanitizer) {}
private RateIcon = "<mat-icon>star_rate</mat-icon>";
private _RateIcon = "<mat-icon class='activeIcon'>star_rate</mat-icon>";
private element ="";
transform(val: number) {
for (let index = 0; index < val; index++) {
this.element += this._RateIcon;
}
for (let index = 0; index < (5 - val); index++) {
this.element += this.RateIcon;
}
return this.sanitizer.bypassSecurityTrustHtml(`<span>${this.element}</span>`);
}
}
组件.html
<div [innerHTML]="'artcl.rating' | 'rating'"></div>
当我使用浏览器检查元素时,我得到以下信息
<mat-icon class="activeIcon">star_rate</mat-icon>
<mat-icon class="activeIcon">star_rate</mat-icon>
<mat-icon class="activeIcon">star_rate</mat-icon>
<mat-icon>star_rate</mat-icon>
<mat-icon>star_rate</mat-icon>
但在浏览器视图本身,我得到以下
star_ratestar_ratestar_ratestar_ratestar_rate
那我的管道有什么问题?
解决方案
推荐阅读
- python - InvalidRequestError flask-sqlalchemy。无法制作 SQLite 表
- r - Dplyr 中的标准和非标准评估
- angular - AppComponent FormControl 似乎没有与自定义材质输入 FormControl 绑定
- javascript - Datepicker值转换为Angularjs中的字符串
- mysql - 如何修复mysql更新查询中的连接错误
- regex - 如何使用正则表达式将字符添加到值的末尾?
- docker - 我要实现什么来向 Docker 添加新操作系统?
- node.js - Discord OAuth2 redirect_uri 组件的问题
- node.js - 如何使用 nodeJS 访问 localStorage?
- android - 背景颜色主题问题