角度渲染链接

时间:2018-06-26 20:21:27

标签: angular typescript components ag-grid

我正在使用一个名为ag-grid的库,该库允许我创建数据表。在此表中,我包括通过routerLink指向用户个人资料的链接。

我的问题是,如果用户在搜索中无效,则该链接会将您带到无效的个人资料,因此我尝试针对这种情况使用其他链接。

我创建了一个生成链接的组件,但它只是将HTML打印到页面上。

组件:

import { Component, OnInit } from '@angular/core';

@Component({
  template: "{{ link }}"
})

export class ViewLinkComponent {

  params: any;
  link: any;

  agInit(params: any): void {

    this.params = params;

    // If we don't have an NTID, we can assume this is an invalid record
    if (this.params.data.QID == '-') {

      // Loop over our data object
      for (var key in this.params.data) {

        if (this.params.data.hasOwnProperty(key)) {
          // If we are not looking at order and our values are not empty
          if (key != 'order' && this.params.data[key] != '-') {
            this.link = this.createLink(this.params.data[key]);
            return;
          }

        }

      }

    }else{
      this.link = '<a routerLink="/profile/'+ params.data.NTID +'">View Profile</a>'
    }

  }

  createLink(query){
    return '<a href="https://external.com/search?q='+query+'" target="_blank">Search</a>';
  }

}

最终结果:

下图显示了正确的链接,但未将其呈现为实际的可点击链接。

enter image description here

但是,如果我要执行以下操作,它将很好:

@Component({
  template: "<a routerLink='/profile/{{ params.data.NTID }}'>View Profile</a>"
})

问题是我需要使用一些逻辑来确定它是使用路由的内部链接还是外部链接。

我是否有办法告诉这个组件,假设它是安全的,可以渲染HTML吗?

1 个答案:

答案 0 :(得分:1)

生成本地HTML代码的常见方法是Renderer2。但是,RouterLink是伪指令,如果您在运行时生成链接,则不会考虑它。 您不能绕过这样的条件模板:

<a *ngIf="isUserValid" routerLink="/profile/...
<a *ngIf="!isUserValid" href="https://external.com/search...