我有一个Angular 2组件,在某些用户操作中,它从数据库加载html . html包含具有相对路径的锚标签 . 鉴于我不想在用户点击链接时重新加载整个应用程序,我试图使用routerLink指令;但是,由于此html是动态加载的,因此不会处理routerLink . html不包含任何其他角度指令 . 实现这一目标的最简单方法是什么?请参阅下面的示例 .
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `<h1>Hello {{name}}</h1>
<p><a (click)="GetTextFromDatabase()">Get data from database</a> which should contain a <a routerLink="/some-route">working link</a></p>
<div [innerHTML]="data"></div>
<router-outlet></router-outlet>`,
})
export class AppComponent {
name: string = 'Angular';
data: string;
private GetTextFromDatabase(): void {
this.data = '<p>here is my paragraph containing a <a routerLink="/some-route">link</a>';
}
}
1 回答
我会保持简单 .
如果可能的话,用
<span>
标签替换链接并使用CSS使它们看起来像链接 . 将它们重写为<span data-link="/some-route">link</span>
.在您的模板中使用单击侦听器:
在您的组件中阅读点击目标:
这应该足以使链接工作 .
从技术上讲,您不必将标签重写为
<span>
.<a routerLink="">
也可以正常工作,因为它没有href
属性来触发浏览器URL更改 . 只需阅读routerLink
属性而不是我的示例 .