我创建了一个博客,其中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解析器是这样实现的:
<markdown ngPreserveWhitespaces>{{content}}</markdown>
我还尝试通过在main / tsconfig文件中设置ngPreserveWhitespaces
来完成此操作。但是我不认为这是问题所在,因为我可以(在JS中是本机使用)console.log返回的字符串(#1)和硬编码的字符串(#2)甚至我的日志都显示不同(后者的格式正确,而前者只是将输出字符串化。
我尝试过:
<br />
似乎没有什么可以安抚换行神。
答案 0 :(得分:1)
好的,所以我找到了解决方案,现在我将markdown字符串存储为:
"## This is a subheader\n This is a sentence"
这里的区别是我将其存储在其中的接口(一个Mongo数据库)已经将语音标记放在字符串值周围,所以现在实际上看起来像这样:
""## This is a subheader\n This is a sentence""
对于MongoDB Compass,这比我尝试的要奇怪的多。
由此,我能够正确解析JSON值(以前,它试图使用不是有效JSON的字符串来做到这一点,因为它没有包含在双语音标记中)。
我现在在Property
类的扩展中处理此问题,我为每个称为HtmlProperty
的类都对其进行了实例化,可以正确地解析值。