2017-01-27 3 views
1

Я пытаюсь выполнить итерацию через объект. Я попытался следующие:ngFor loop trough Объект

трубы:

@Pipe({name: 'keys'}) 
export class KeysPipe implements PipeTransform { 
    transform(value, args:string[]) : any { 
    if (!value) { 
     return value; 
    } 

let keys = []; 
for (let key in value) { 
    keys.push({key: key, value: value[key]}); 
} 
return keys; 

}}

в моем HTML:

<div *ngIf="details"> 
<li *ngFor=" let entry of details| keys">   
{{entry.key}}, {{entry.value}} 
</li> 

И его работы, но он показывает весь свой объект. Мне просто нужны определенные ключи объекта. Так что я могу сделать что-то вроде этого (это объект с массивом в нем, этот способ не работает, если его единственный объект):

<button ion-item *ngFor="let movie of movies?.results" (click)="goToDetails(movie.id)"> 
    <h2>{{movie.title}}</h2> 
{{movie.overview}} 
</button> 
+0

ли не '{{entry.value.yourDesiredKey}}' работу? Я не понимаю вопрос – echonax

+0

, если вам нужны определенные ключи .. не * ngIf = "entry.key == condition" в работе цикла? –

+0

Это не сработает: я получаю сообщение об ошибке Не могу прочитать свойство 'title' из null. Проблема в том, что ngFor перебирает весь мой объект. Мне просто нужно показать определенные части. Как и в случае с ngFor, вы можете прокручивать определенные части, делая что-то вроде {{entry.title}} – Mai

ответ

2

Вам нужно реализовать либо фильтр трубы или передавать аргументы (требуемый имена свойств) к вашей трубе:

<li *ngFor=" let entry of details| keys:'name', 'value'"> 
//or 
<li *ngFor=" let entry of details| keys | filter"> 

for (let key in value) { 
    if(!Array.isArray(args) || args.length === 0 || args.indexOf(key) > -1) 
    keys.push({key: key, value: value[key]}); 
} 

<li *ngFor=" let entry of details| keys:'name'">   
{{entry.key}}, {{entry.value}} 
</li> 
+0

Я попытался использовать вашу первую строку и использовал каждую комбинацию, о которой я мог думать, но ничего не появляется. Если я хочу показать только заголовок, как я могу это сделать? Что должно быть между {{}}. Я новичок в этом, и я не могу понять это. – Mai

+0

добавил пример с помощью 'args' – kemsky

+0

Это не работает. Он покажет весь объект. Угловое неверно для выведения ngfor, проходящего через объекты. – Mai

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