尝试编写一个Angular 2管道,该管道将使用JSON对象字符串并将其漂亮打印/格式化后返回给用户显示。
例如,将采取以下措施:
{“ id”:1,“ number”:“ K3483483344”,“ state”:“ CA”,“ active”:true}
并以HTML显示时返回如下所示的内容:
所以在我看来,我可以这样写:
<td> {{ record.jsonData | prettyprint }} </td>
Answers:
我想添加一个更简单的方法,使用内置json
管道:
<pre>{{data | json}}</pre>
这样,将保留格式。
<pre>
,将与如不行<p>
,<span>
等
我将为此创建一个自定义管道:
@Pipe({
name: 'prettyprint'
})
export class PrettyPrintPipe implements PipeTransform {
transform(val) {
return JSON.stringify(val, null, 2)
.replace(' ', ' ')
.replace('\n', '<br/>');
}
}
并以这种方式使用它:
@Component({
selector: 'my-app',
template: `
<div [innerHTML]="obj | prettyprint"></div>
`,
pipes: [ PrettyPrintPipe ]
})
export class AppComponent {
obj = {
test: 'testttt',
name: 'nameeee'
}
}
看到这个stackblitz:https ://stackblitz.com/edit/angular-prettyprint
<div>{{obj | prettyprint }}</div>
但这确实有效!
json
管道,因为在角1
implements PipeTransform
之后的失踪export class PrettyPrintPipe
由于这是google上的第一个结果,让我快速总结一下:
如果您只需要打印JSON而没有正确的格式,那么json
Shane Hsu建议的内置管道可以完美地工作:<pre>{{data | json}}</pre>
但是,如果您希望获得不同的输出,则需要按照Thierry Templier的建议创建自己的管道:
ng g generate pipe prettyjson
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'prettyjson'
})
export class PrettyjsonPipe implements PipeTransform {
transform(value: any, ...args: any[]): any {
return JSON.stringify(value, null, 2)
.replace(/ /g, ' ') // note the usage of `/ /g` instead of `' '` in order to replace all occurences
.replace(/\n/g, '<br/>'); // same here
}
}
innerHTML
函数内使用管道:<div [innerHTML]="data | prettyjson"></div>