【问题标题】:Angular Markdown Parsing "\n" Newline Characters IssueAngular Markdown 解析“\n”换行符问题
【发布时间】:2018-12-16 21:34:53
【问题描述】:

我创建了一个博客,其中 Markdown 从我的后端作为字符串返回,但是当我返回带有正确换行符的字符串时,它的行为与预期不符。

我正在使用ngx-markdown 来处理降价字符的解析,并使用ngPreserveWhitespaces 属性来确保它应该按预期运行。

例子:

// Example #1 Returned String
"## This is a subheader\n This is a sentence"

// Output
<h2>This is a subheader\n This is a sentence</h2>

它显示为单行,换行符物理呈现为文本,如上所述。

但是,在我的任何 Angular 组件中,我可以将这个相同的字符串写为组件上的属性并返回它,它会像这样正确呈现:

// Example #2 Hard Coded String
public correct: string = "## This is a subheader\n This is a sentence";

// Output

<h2>This is a subheader</h2>

<p>This is a sentence</p>

如前所述,我使用的降价解析器是这样实现的:

<markdown ngPreserveWhitespaces>{{content}}</markdown>

我还尝试通过在 main/tsconfig 文件中设置 ngPreserveWhitespaces 来做到这一点。但是我不认为这是问题所在,因为我可以(在 JS 中)console.log 我返回的字符串(#1)和硬编码字符串(#2),甚至我该死的日志显示不同(使用后者格式正确,前者只是将输出字符串化)。

我已经尝试过:

  • JSON 以多种方式(以及不使用)对数据进行字符串化/解析
  • 我已尝试使用正则表达式手动替换字符
  • 我试图手动使用&lt;br /&gt;
  • 我已经尝试了here 概述的有关此降价解析器处理空格的所有内容(我认为这不是问题)

似乎没有什么可以安抚换行之神。

【问题讨论】:

    标签: javascript html angular markdown


    【解决方案1】:

    解决方案

    好的,所以我找到了解决方案,我现在将我的降价字符串存储为:

    "## This is a subheader\n This is a sentence"
    

    这里的区别是我在(Mongo db)中存储它的接口已经将语音标记放在字符串值周围,所以它现在实际上看起来像这样:

    ""## This is a subheader\n This is a sentence""
    

    MongoDB Compass 比我尝试的更奇怪。

    据此,我能够正确地 JSON.parse 值(以前它试图使用无效 JSON 的字符串,因为它没有包含在双语音标记中)。

    我现在在 Property 类的扩展中处理这个问题,我为每个名为 HtmlProperty 的类提供了一个在实例化时正确解析值的方法。

    【讨论】:

    • 我已经向 MongoDB Compass 提出了一张票,要求重新设计他们的字符串数据接口,这样它就不会看起来像字符串实际上有语音标记/双语音标记,而实际上它们没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    • 2017-07-02
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多