0

Ich habe solche Daten in meiner App:Wie wird ein bestimmter Wert über Filter angezeigt?

birthdayGreetings:Array<any> = [ 
    { 
     name: 'John', 
     date: new Date(1994, 3, 19), 
     greeting: 'Happy Birthday, John! Good luck!', 
     displayName: false 
    } 
]; 

ich nur NAME zeigen müssen, wenn sie das Datum an dieser Woche ist, so dass ich dies tun:

export class ThisWeekPipe { 

transform(myArr) { 

    var result = myArr.filter(
     item => { 
      var day = item.date.getDate(); 
      if(day >= 4 && day <= 10) { 
       item.displayName = true; 
       return true; 
      } 
     } 
    ); 

    return result; 
    } 
} 

Aber ich habe immer das gleiche Ergebnis (nur Elemente der Matrix, die mit diesem Filter in Ordnung ist)

Hier html:

<ul> 
    <li *ngFor="#manBirthday of birthdayGreetings | thisWeekPipe"> 
      {{ manBirthday }} 
    </li> 
</ul> 

Wie kann ich das richtig machen? Danke

+2

Sie könnten Karte zusammen mit Filter verwenden. 'myArr.filter (...). map (i => return i.name)' – Abdulrahman

Antwort

2

Sie könnten Ihre Rohr auf diese Weise aktualisieren:

@Pipe({ 
    name: 'thisWeekPipe' 
}) 
export class ThisWeekPipe { 
    transform(myArr) { 
    return myArr.filter(item => { 
     var day = item.date.getDate(); 
     return (day >= 4 && day <= 10); 
    }).map(item => item.name); 
    } 
} 

Sie zuerst die Liste filtern, um nur Elemente zu erhalten, die den Zeitpunkt Kriterien entsprechen und dann nur die name Eigenschaft verwenden. Auf diese Weise erhalten Sie nur eine Liste mit Namen, die in einer ngFor-Schleife angezeigt werden sollen.

Siehe diese Plunkr: https://plnkr.co/edit/6VHtFp4zvvMdm3rXbFOP?p=preview.

+0

Und was soll ich tun, wenn ich eine Begrüßungseigenschaft zurückgeben muss, ob das Geburtsdatum heute ein Zusatz dazu ist? Sollte ich eine weitere Karte hinzufügen? Vielen Dank – weratius

Verwandte Themen