在 Angular 组件的文本块中向 link 添加(单击)方法
Add (click) method to link in text block in Angular component
我有个小问题。我从服务器获取带有插入到 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.
谢谢。
对于动态 link,您可以在 a
标签中绑定您想要的 url
link,如下所示
<a [href]="some.url">Link</a>
如果some
是一个对象。
对于点击事件你可以有类似的东西
method(url: string) {
window.location.href = url;
}
然后你将像 (click)="method('http://domain.tld/page.html')"
一样传递你的 url
字符串
如果我没看错,您将使用 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) {
...
}
}
我有个小问题。我从服务器获取带有插入到 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.
谢谢。
对于动态 link,您可以在 a
标签中绑定您想要的 url
link,如下所示
<a [href]="some.url">Link</a>
如果some
是一个对象。
对于点击事件你可以有类似的东西
method(url: string) {
window.location.href = url;
}
然后你将像 (click)="method('http://domain.tld/page.html')"
url
字符串
如果我没看错,您将使用 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) {
...
}
}