【发布时间】:2019-01-13 02:10:37
【问题描述】:
这是 Stackblitz 链接:- https://stackblitz.com/edit/angular-gqz1hr?file=src/app/app.component.html
我正在努力实现:-
1) 我正在尝试在每个 json 行(行号)之前添加编号,如图所示。
2) 在编号列中添加不同的背景色,即#000。
.html
<div class="col-12 rmpm" style="background:#292a30;height: 300px;">
<pre id="responseSection" *ngIf="JSON" [innerHtml]="JSON"></pre>
</div>
.ts
constructor(){
let json = {'key':2 ,'key2':3}
this.output(this.syntaxHighlight(JSON.stringify(json, undefined, 4)));
}
output(inp) {
this.JSON = inp;
}
syntaxHighlight(json) {
json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) {
var cls = 'number';
if (/^"/.test(match)) {
if (/:$/.test(match)) {
cls = 'key';
} else {
cls = 'string';
}
} else if (/true|false/.test(match)) {
cls = 'boolean';
} else if (/null/.test(match)) {
cls = 'null';
}
return '<span class="' + cls + '">' + match + '</span>';
});
}
}
【问题讨论】:
-
@CertainPerformance 可用here。
-
为什么要整理您的数据?您在这里有两个不同的数据集。 1:行号,2:JSON。它们是不相关的,因为每个行号都会存在,而与 JSON 数据无关。因此,解决这个小难题的最佳方法是有效地使用您的网格系统。我看到了
col-12- 将其设为col-11并为行号提供一列。然后彼此独立地填充它们。您在这里的问题是认为行号必须与 JSON 的特定位相关,而这里不是这样。只是一个想法。 -
@Randy Casburn,能否请您展示您的方法,以便包含序列号的列的样式变得容易。
-
虽然您已经接受了答案,但我会提供帮助。首先,您的 RegEx 匹配函数会删除您的 HTML 标记,因此您不会得到任何突出显示。你需要调查一下。由于您的
syntaxHighlight()函数什么都不做,所以我忽略了该功能。所以这里有一个堆栈闪电战,它清理了一切并正确使用引导程序:stackblitz.com/edit/angular-mb5bdb如果你还有其他问题要问我,欢迎在这里与我开始聊天或在 LinkedIn 上找到我 -
谢谢,但这里的序列号显示不正确。
标签: javascript angular