Угловая ссылка Render - PullRequest
       11

Угловая ссылка Render

0 голосов
/ 26 июня 2018

Я использую библиотеку под названием 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 голосов
/ 27 июня 2018

Обычный способ генерировать собственный HTML-код - Renderer2 . Тем не менее, RouterLink является директивой, она не будет принята во внимание, если вы создадите ссылку во время выполнения. Вы не можете обойти условные шаблоны следующим образом:

<a *ngIf="isUserValid" routerLink="/profile/...
<a *ngIf="!isUserValid" href="https://external.com/search...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...