html - 在Angular 8中使用管道将不安全的URL转换为安全的问题
问题描述
我是 Angular 的新手,我正在尝试将我的不安全 URL 转换为安全 URL。我在这里搜索以使用管道纠正此问题,但我没有看到它转换为安全的,可能是我缺少的东西。
我的pipe.ts文件如下所示:
safe-url.pipe.ts
import { Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
@Pipe({
name: 'safeUrl'
})
export class SafeUrlPipe implements PipeTransform {
constructor(private domSanitizer: DomSanitizer) {}
transform(value: any, args?: any): any {
return this.domSanitizer.bypassSecurityTrustHtml(value);
}
}
我的模板的一部分如下所示:
<tr *ngFor="let myData of data"> // Data is coming the from component.ts file
<td> <a href='my://problem/{{myData.Id}} | safeUrl'>myLink</a></td>
</tr>
在 UI 中,当我检查时,它看起来像unsafe: my://problem/55316480 | safeUrl
. 但我希望它看起来像my://problem/55316480
我该如何解决?
解决方案
<tr *ngFor="let myData of data"> // data is coming from component.ts file
<td> <a href='my://problem/{{myData.Id}} | safeUrl'>myLink</a></td>
问题是 1)您将字符串传递给 href 而不是表达式。2)绕过错误的属性
尝试
<td> <a [href]="('my://problem/' + myData.Id) | safeUrl">myLink</a></td>
return this.domSanitizer.bypassSecurityTrustUrl(value);
推荐阅读
- html - 页面加载时元素移动并返回正确位置
- html - 使用 jQuery 点击链接更改 Woocommerce 产品数量
- android - Phonegap 离线 - 错误 403 - 它会再次在线吗?你知道其他选择吗?
- c++ - QIcon 使用 qrc 文件但不使用文件系统路径
- ios - 如果我使用 Firebase 云消息传递,我是否必须更改我的 Apple 推送通知设置?
- android - 如果recycler view没有被回收,那么使用recycler view是不是效率低下?
- angular - 如何修改 Angular Material 日期范围选择器以仅接受月份
- google-sheets - 如何将 Google 表格中的 Twitter 日期/时间值解析为日期时间评估的格式
- sql - 为什么这不是对所有 form_id 进行排序,我怎样才能对其进行排序
- time-complexity - 自动编码器的顺序复杂度