I am new for angular and i have one basic level problem which is list is not getting to updated when i add to new object to my array.
I have one button when i tapped on this i am adding new object to array-list but list is not updating and more-ever i am group-by my array-list by date,Is this is problem can some one help me please.
.ts:
export class HomePage {
events: any;
ionViewDidLoad() {
this.events = [
{
"id": 1,
"date": "2017-12-26",
"title": "First event"
},
{
"id": 2,
"date": "2017-12-30",
"title": "Second event"
},
{
"id": 3,
"date": "2017-12-26",
"title": "Third event"
},
{
"id": 4,
"date": "2017-12-31",
"title": "Last event"
}
];
}
add(){
this.events.push({
"id": 5,
"date": "2017-12-26",
"title": "Test event"
});
}
}
.html:
<ion-content padding>
<div *ngIf="!events || events.length === 0">
<p>No messages</p>
</div>
<div *ngIf="events && events?.length > 0 ">
<ion-item-group *ngFor="let group of events | groupByCategory: 'date'">
<ion-item-divider color="light">
{{ group.key }}
</ion-item-divider>
<ion-item *ngFor="let event of group.list">{{ event.title }}</ion-item>
</ion-item-group>
</div>
<div class="bottomright" (click)="add()">Add</div>
</ion-content>
Custom Pipe:
@Pipe({ name: 'groupByCategory' })
export class GroupbycategoryProvider implements PipeTransform {
transform(value: any, groupByKey: string) {
const events: any[] = [];
const groupedElements: any = {};
value.forEach((obj: any) => {
if (!(obj[groupByKey] in groupedElements)) {
groupedElements[obj[groupByKey]] = [];
}
groupedElements[obj[groupByKey]].push(obj);
});
for (let prop in groupedElements) {
if (groupedElements.hasOwnProperty(prop)) {
events.push({
key: prop,
list: groupedElements[prop]
});
}
}
return events;
}
}