html - 添加(单击)方法以链接 Angular 组件中的文本块
问题描述
我有一个小问题。我正在从服务器获取带有插入到 Angular 组件中的 innerHtml 的文本。在本文中,可能有一些链接。示例文本块如下所示:
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<a href="some.link.com">Link<a/>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
有没有办法在这样的点击操作中插入绑定?
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<a href="some.link.com" (click)="methodName('http://domain.tld/page.html')">Link<a/>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
谢谢。
解决方案
如果我猜对了,您可以使用 innerHtml 渲染从服务器加载的 html,在这种情况下,您不能在此模板中使用 Angular 指令。但是你可以在内容渲染之后用普通的JS(document.addEventListener)添加监听器。
@Component({
template: `<div #wrapper [innerHTML]="sanitizedHtml"></div>`
}) class MyComp {
@ViewChild('wrapper') wrapper: ElementRef<HtmlElement>;
ngAfterViewInit() {
const links = this.wrapper.naviveElement.querySelectorAll('a[href]');
links.forEach(link =>
link.addEventListener('click', this.linkClickHandler.bind(this));
);
}
linkClickHandler(event: MouseEvent) {
...
}
}
推荐阅读
- javascript - Android Chrome 上的 Blob 扭曲音频
- python - 如何在 tkinter - python 中添加多个块
- java - 为什么它不创建表并添加数据?
- gradle - 如何在 Android Studio 3.1.4 中使用 Data Binding 和 Kotlin?
- python - 复杂的 tkinter 动画所需的策略
- ios - 如何检查内存堆栈中的视图?ios 中 Shopify ProxyView 中的应用程序崩溃
- loopbackjs - Loopback:如何停止控制台命令?
- bash - 如何在没有代理链的情况下通过 CLI 使用 socks 代理(安装代理链)
- c# - ClosedXML 保存工作簿以提示只读打开
- node.js - 有没有办法在发电机查询操作中应用分页限制之前先应用 filterExpression。?