Использование bypassSecurityTrustHtml, похоже, нарушает гиперссылку

Я пытаюсь обнаружить URL-адрес или простой текст в строковом значении. Если это URL-адрес, функция возвращает гиперссылку HTML с использованием bypassSecurityTrustHtml. Гиперссылка отображается, но когда я нажимаю на нее, ничего не происходит. Однако Chrome распознает это как ссылку, и когда я щелкаю правой кнопкой мыши, я могу выбрать «Открыть в новом окне», и он работает.

Угловой код:

public formatReservedField(value: string) {
  let pattern = /(http|https|ftp|ftps)\:\/\//gm;

  if (pattern.test(value)) {
    return this._sanitizer.bypassSecurityTrustHtml("<a href='" + value + "' target='_blank'>" + value + "</a>");
  }

  return value;
}

HTML код:

<div [innerHTML]="formatReservedField(reservedField)"></div>

person Jonathan Anctil    schedule 25.10.2017    source источник


Ответы (1)


Хорошо, я нашел это!

Я установил для обнаружения изменений в моем компоненте OnPush стратегию, и теперь она работает:

@Component( {
    ...
    changeDetection: ChangeDetectionStrategy.OnPush,
    ...
}
person Jonathan Anctil    schedule 25.10.2017