0

i try to use the output from component "event-settings" as input by the component "events-list" how i can solve this problem ?

<ion-content padding>
    <button ion-button type="button" class="showFilterBtn" (click)="isCollapsed = !isCollapsed"
            [attr.aria-expanded]="!isCollapsed" >
      Show Filter
    </button>

    <event-settings [eventName]="false" [accompaniment]="false" [hidden]="isCollapsed" (searchedEvents)="getSearchedEvents($event)"></event-settings>
    <events-list *ngIf="this.events!= 'undefined'" [events]="this.events"></events-list>
</ion-content>

My Output is an Eventemitter called seachEvents

public searchEvents(){

    let startdatetime= this.start.split("T");
    let startdate = startdatetime[0].split("Z")[0];
    let starttime = startdatetime[1].split("Z")[0];

    let enddatetime = this.end.split("T");
    let enddate = enddatetime[0].split("Z")[0];
    let endtime = enddatetime[1].split("Z")[0];

    this.EventService.getEventsByFilter(this.userId,this.age,startdate,enddate,this.musicDirection,
        this.maxPerson,this.country,this.federaleState,this.city)
        .forEach((events) => {
            this.searchedEvents.emit(events);
        });
}

and this.events (observable) is data from my ouput

ashfaq.p
  • 4,877
  • 15
  • 30
leo180593
  • 19
  • 7

2 Answers2

0

You'd need to use a rxjs observable or subject. The other option is to use a service and is detailed in this answer https://stackoverflow.com/a/35878524/3211852

David
  • 1,276
  • 13
  • 23
0

First remove "this" in front of the input variable it can fix it.

If not there is an easiest solution than RxJs. First I guess your function for setting getSearchEvents change the event variable ? (Add your code if possible)

So When you emit the event you change the variable event and let your event list know every time about it using a setter :

event = new Event();
@Input() set eventChange(event) {
    this.event = event;
}

In your HTML replace [event] with [eventChange] and you are done ;)

andrea06590
  • 1,063
  • 1
  • 8
  • 18