2016-05-18 54 views
29

Cố gắng viết một ống Angular 2 sẽ lấy một chuỗi đối tượng JSON và trả về nó được in đẹp/định dạng để hiển thị cho người dùng.Ống góc 2 biến đổi đối tượng JSON thành JSON

Ví dụ, nó sẽ thực hiện việc này:

{ "id": 1, "số": "K3483483344", "nhà nước": "CA", "hoạt động": true }

Và trở lại cái gì đó trông như thế này khi được hiển thị dưới dạng HTML:

enter image description here

Vì vậy, theo quan điểm của tôi, tôi có thể có một cái gì đó như:

<td> {{ record.jsonData | prettyprint }} </td> 
+1

có vẻ như bạn muốn tạo một đường ống tùy chỉnh. đây là một số tài liệu: https://angular.io/docs/ts/latest/guide/pipes.html#!#custom-pipes. hãy dùng thử và nếu bạn gặp sự cố, hãy đăng câu hỏi cụ thể hơn – danyamachine

Trả lời

116

Tôi muốn nói thêm một cách thậm chí đơn giản hơn để làm điều này, sử dụng được xây dựng trong json ống:

<pre>{{data | json}}</pre> 

Bằng cách này, các định dạng được bảo tồn.

+1

hoạt động nếu 'dữ liệu' của bạn là một' đối tượng ' – maxbellec

+0

cảm ơn. điều này làm việc –

+0

Cảm ơn điều này là hoàn hảo! – laurent

7

tôi sẽ tạo ra một đường ống tùy chỉnh cho việc này:

@Pipe({ 
    name: 'prettyprint' 
}) 
export class PrettyPrintPipe implements PipeTransform { 
    transform(val) { 
    return JSON.stringify(val, null, 2) 
     .replace(' ', '&nbsp;') 
     .replace('\n', '<br/>'); 
    } 
} 

và sử dụng nó theo cách này:

@Component({ 
    selector: 'my-app', 
    template: ` 
    <div [innerHTML]="obj | prettyprint"></div> 
    `, 
    pipes: [ PrettyPrintPipe ] 
}) 
export class AppComponent { 
    obj = { 
    test: 'testttt', 
    name: 'nameeee' 
    } 
} 

Xem này plunkr: https://plnkr.co/edit/WbywRZTrpBoX3UsROYuS?p=preview.

+0

Đã làm việc! Tôi đã có một chuỗi json, không phải là một đối tượng json, vì vậy tôi chỉ cần thêm dòng này trước khi gọi JSON.stringify: var jsonObject = JSON.parse (jsonString); – Derek

+0

Cú pháp không mong muốn, tôi hy vọng việc sử dụng giống như sử dụng ống tiêu chuẩn: '

{{obj | prettyprint }}
' nhưng đã hoạt động! –

+1

Như @ shane-hsu chỉ ra, có một ống 'json' được tích hợp sẵn, như có trong Angular 1. –

Các vấn đề liên quan