angular - 如何在innerHTML中使用routerLink

标签 angular angular6

我正在使用 Angular 6。我只想通过使用 innerHTML 创建一个动态路由.我尝试了以下代码,但它不起作用。
在组件文件中,我在构造函数里面写了如下代码:

this.anchor = "<a routerLink='login'>Dynamic Login</a>"
在模板文件中,我写了以下代码:
<div [innerHtml]="anchor"></div>

最佳答案

在遇到与您相同的问题时,我使用了一种 hacky 解决方案,因为我没有找到更好的解决方案。在模板中我有 span我设置的地方 innerHtml该 html 来自服务器,它可能有 a标签以及任何其他格式的 html 标签。所以解决方案是添加点击事件:

<span [innerHtml]="customHtml" (click)="processLinks($event)"></span>
在我们的 ts 文件中处理它们:
customHtml: string = 'Hey <a href="/help/">this is</a> a link';

// Don't forget to import and inject the router
constructor(private router: Router) {}

// ...

processLinks(e) {
  const element: HTMLElement = e.target;
  if (element.nodeName === 'A') {
    e.preventDefault();
    const link = element.getAttribute('href');
    this.router.navigate([link]);
  }
}
请注意,您可以对此处的链接进行任何操作,如果需要,您可以在导航到链接之前添加一些条件或转换链接。
希望能帮助到你。我知道这不是最好的解决方案,必须有更好的解决方案。但这就是我匆忙想到的。

关于angular - 如何在innerHTML中使用routerLink,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55350647/

相关文章:

angular - 我如何在 angular 中使用品牌 fontawesome 图标

angular - Angular 6 中使用 Observable 的 $q.when、$q.defer 和 defer.promise 的替代品是什么

typescript - 在 Angular 6 的 iframe 中渲染 View 并继续使用模板变量

angular6 - 删除 BpmnJs 符号

javascript - Angular 6 : ERROR TypeError: Cannot read property 'toLowerCase' of undefined

javascript - 如何在 Angular 6 中使用主题?

javascript - 类型 'update' 上不存在属性 'Observable<{}>'。火力地堡 5 Angular 火 2 5

angular - 如何捕获 Angular 2 中的内联模板错误?

Angular 2 RC.5 共享模块找不到管道

angular - angular 6 中 ng add <package name> 与 npm install <package name> 之间的区别