2017-01-25 2 views
2

Btw, я новичок в TypScript и Angular2.Петля к объекту в машинописном тексте

У меня есть служба, которая возвращает объект типа PracticeTestList. Объявление сервиса и объекта показано ниже.

Теперь у меня есть настраиваемая трубка, которая читает объект, как показано ниже.

Пользовательский класс трубы получил ли объект, но в для цикла объект читаются как одной строки строку не как объект. Почему это?

Как читать объект как объект, а затем в машинописном тексте?

Благодаря

Сервис

getMyPracticeTest(uid: string){ 
    return this._http.get('http://localhost:49753/RestServiceImpl.svc/getMyPracticeTest/' + uid) 
    .map(data => { 
     data.json(); 
     // the console.log(...) line prevents your code from working 
     // either remove it or add the line below (return ...) 
     console.log("getMyPracticeTest >>>>>>> ", <PracticeTestList[]>data.json()); 
     return <PracticeTestList[]>data.json(); 
    }); 
} 

декларация объекта

import { Injectable } from '@angular/core'; 

@Injectable() 
export interface PracticeTestList { 
    Purchase_ID: number; 
    User_FK: number; 
    name: string; 
    price: number; 
    resteurant: string; 
    credit_card_number: string; 
    purchase_date : any; 
    Test_Status_FK: number; 
    child :string; 
} 

Пользовательские трубы

import { Pipe, PipeTransform } from '@angular/core'; 

@Pipe({name: 'values'}) 
export class ValuesPipe implements PipeTransform { 
    transform(value, args:string[]) : any { 
     let keys = []; 

     for (let key in value) { 
      console.log("Key >>>> " + key + " value >>>>> " + value[key]); 
      keys.push({key: key, value: value[key]}); 
     } 

     return keys; 
    } 
} 

Добавлено Вход в трубу

Key >>>> 0 value >>>>> [ main.bundle.js:64502:13 
Key >>>> 1 value >>>>> { main.bundle.js:64502:13 
Key >>>> 2 value >>>>> " main.bundle.js:64502:13 
Key >>>> 3 value >>>>> P main.bundle.js:64502:13 
Key >>>> 4 value >>>>> u main.bundle.js:64502:13 
Key >>>> 5 value >>>>> r main.bundle.js:64502:13 
Key >>>> 6 value >>>>> c main.bundle.js:64502:13 
Key >>>> 7 value >>>>> h main.bundle.js:64502:13 
Key >>>> 8 value >>>>> a main.bundle.js:64502:13 
Key >>>> 9 value >>>>> s main.bundle.js:64502:13 
Key >>>> 10 value >>>>> e main.bundle.js:64502:13 
Key >>>> 11 value >>>>> _ main.bundle.js:64502:13 
Key >>>> 12 value >>>>> I main.bundle.js:64502:13 
Key >>>> 13 value >>>>> D main.bundle.js:64502:13 
Key >>>> 14 value >>>>> " main.bundle.js:64502:13 
Key >>>> 15 value >>>>> : main.bundle.js:64502:13 
Key >>>> 16 value >>>>> 1 main.bundle.js:64502:13 
Key >>>> 17 value >>>>> , main.bundle.js:64502:13 
Key >>>> 18 value >>>>> " 

Добавлен HTML код

<table class="table" *ngIf="myPurchaseItems"> 
    <tr *ngFor="let entry of myPurchaseItems | values"> 
     <td>Key: {{entry.key}}, value: {{entry.value}}</td> 
    </tr> 
</table> 
+0

он говорит [объект объекта] или что-то подобное? – chrispy

+0

Вы можете предоставить журнал того, что console.log (значение) находится внутри вашей трубы? – chrispy

+0

Не могли бы вы отправить исходный текст своего шаблона? –

ответ

4

Используйте Object.keys, чтобы получить ключи первыми:

import { Pipe, PipeTransform } from '@angular/core'; 
@Pipe({ name: 'values' }) 
export class ValuesPipe implements PipeTransform { 
    transform(value): any { 
    let keys = Object.keys(value); 
    return keys.map(k => value[k]); 
    } 
} 

Вы можете попробовать Object.values(), чтобы получить значения напрямую, но он, возможно, еще не поддерживается повсюду.

Смежные вопросы