Próba napisania potoku Angular 2, który pobierze ciąg obiektu JSON i zwróci go ładnie wydrukowany / sformatowany do wyświetlenia użytkownikowi.
Na przykład zajmie to:
{"id": 1, "number": "K3483483344", "state": "CA", "active": true}
I zwróć coś, co wygląda tak, gdy jest wyświetlane w HTML:
Więc moim zdaniem mógłbym mieć coś takiego:
<td> {{ record.jsonData | prettyprint }} </td>
Odpowiedzi:
Chciałbym dodać jeszcze prostszy sposób, aby to zrobić, używając wbudowanej
json
rury:W ten sposób formatowanie zostaje zachowane.
źródło
<pre>
i nie będzie działać z np<p>
,<span>
itpStworzyłbym do tego niestandardową rurę:
i użyj go w ten sposób:
Zobacz ten stackblitz: https://stackblitz.com/edit/angular-prettyprint
źródło
<div>{{obj | prettyprint }}</div>
ale zadziałało!json
rura, tak jak w Angular 1.implements PipeTransform
poexport class PrettyPrintPipe
Ponieważ jest to pierwszy wynik w Google, pozwolę sobie podsumować:
jeśli potrzebujesz tylko wydrukować JSON bez odpowiedniego formatowania, wbudowany
json
potok sugerowany przez Shane'a Hsu działa idealnie:<pre>{{data | json}}</pre>
jeśli jednak chcesz mieć inne wyjście, musisz utworzyć własną potokę, zgodnie z sugestią Thierry Templier:
ng g generate pipe prettyjson
innerHTML
funkcji:źródło
ponieważ moja zmienna jest dwukierunkowo powiązana z ngModel, nie mogłem tego zrobić w html. Użyłem po stronie komponentów
JSON.stringify(displayValue, null, 2)
i spełniło to zadanie.źródło