使用bypassSecurityTrustHtml似乎打破了超链接

时间:2017-10-25 18:32:15

标签: angular typescript sanitization

我尝试在字符串值中检测到Url或纯文本。如果它是Url,则该函数使用bypassSecurityTrustHtml返回HTML超链接。显示超链接,但是当我点击它时,没有任何反应。但是,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 code:

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

1 个答案:

答案 0 :(得分:1)

好的,我找到了它!

我已将我的组件的更改检测设置为OnPush策略,现在可以使用了:

@Component( {
    ...
    changeDetection: ChangeDetectionStrategy.OnPush,
    ...
}