【问题标题】:Sanitize url in an object rather than single url清理对象中的 url 而不是单个 url
【发布时间】:2020-11-09 22:01:48
【问题描述】:

我有一个对象,该对象具有 successsummarydetail 元素,用于在创建记录后在 PrimeNG 消息 (p-messages) 中显示消息。创建记录后,我调用displayMessage 方法以设置msg 变量

form.ts:

...
this.displayMessage(data);

baseForm.ts:

displayMessage(data: string) {
    var success = data["success"];
    var summary = data["summary"];        
    var detail = data["detail"]; // <a href="http:/.... ">name</a>
    this.msg.push({ success: success, summary: summary, detail: detail });
}

然后在html中显示如下所示的消息:

<p-messages [value]="msg"></p-messages>

但是,超链接标签“Angular 6 sanitize local drive url 中解释的内容来清理 url。尽管我尝试使用该方法,但我没有成功,因为我需要清理 detail 变量中的 url,并且相关方法位于基类上。那么,如何才能正确显示 url?在给定的示例中应该进行哪些更改?

【问题讨论】:

  • Inside data['detail'] 你只有url字符串(http://....)还是html a元素(&lt;a href="http:/.... "&gt;name&lt;/a&gt;)?
  • @gbalduzzi 详细信息有像&lt;a href="http:/.... "&gt;name&lt;/a&gt; 这样的超链接。
  • 另一方面,我调试了超链接,直到它到达 html 并且超链接看起来没问题。但是在html页面中,它是改变的。

标签: javascript angularjs angular typescript sanitization


【解决方案1】:

你必须告诉 primeNG 不要逃避细节:

<p-messages [value]="msg" [escape]="false"></p-messages>

【讨论】:

  • 你摇滚!..你去哪儿了?我查看了很多关于该问题的页面,但没有看到任何解决方案,即使与您的解决方案相比更难:)它非常简单优雅,投票++;)
  • 我刚刚搜索了official documentation
  • 如果答案正确,则应将其标记为已接受,除非您想等待更多答案
  • 当然会将其标记为答案,但我必须等待几分钟,因为 SO 不允许我标记为答案。现在好了。
  • 如果启用转义,HTML 自定义符号(例如&lt;&gt;)将被转义,即以浏览器不将它们视为 HTML 符号而是将其视为普通文本的方式进行转换。如果不转义,就不可能在页面中打印&lt;。见en.wikipedia.org/wiki/…
猜你喜欢
  • 2014-07-02
  • 2015-01-09
  • 2014-02-10
  • 2015-08-13
  • 2016-09-14
  • 2017-02-06
  • 2017-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多