Попытка написать канал Angular 2, который будет принимать строку объекта JSON и возвращать ее в красивом напечатанном / отформатированном виде для отображения пользователю.
Например, это будет так:
{"id": 1, "number": "K3483483344", "state": "CA", "active": true}
И верните что-то похожее на это при отображении в HTML:
На мой взгляд, у меня могло быть что-то вроде:
<td> {{ record.jsonData | prettyprint }} </td>
Ответы:
Я хотел бы добавить еще более простой способ сделать это, используя встроенный
json
канал:Таким образом форматирование сохраняется.
источник
<pre>
и не будет работать, например<p>
,<span>
и т. Д.Я бы создал для этого специальный канал:
и используйте его так:
См. Этот stackblitz: https://stackblitz.com/edit/angular-prettyprint
источник
<div>{{obj | prettyprint }}</div>
но это сработало!json
канал, как и в Angular 1.implements PipeTransform
послеexport class PrettyPrintPipe
Поскольку это первый результат в Google, позвольте мне подытожить:
если вам нужно только распечатать JSON без надлежащего форматирования, встроенный
json
канал, предложенный Шейном Хсу, отлично работает:<pre>{{data | json}}</pre>
однако, если вы хотите получить другой вывод, вам нужно будет создать свой собственный канал, как предложил Тьерри Темплиер:
ng g generate pipe prettyjson
innerHTML
функции:источник
поскольку моя переменная имеет двустороннюю привязку к ngModel, я не мог сделать это в html. Я использовал компоненты,
JSON.stringify(displayValue, null, 2)
и они сделали свою работу.источник