我如何使用输出作为输入?

时间:2018-04-14 17:42:07

标签: javascript angular typescript ionic-framework

我尝试使用组件的输出" event-settings"作为组件的输入" events-list"我怎么能解决这个问题?

<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>

我的输出是一个名为seachEvents的Eventemitter

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);
        });
}

和this.events(observable)是来自我的输出

的数据

2 个答案:

答案 0 :(得分:0)

您需要使用rxjs observable或subject。另一种选择是使用服务,详见答案https://stackoverflow.com/a/35878524/3211852

答案 1 :(得分:0)

首先在输入变量前面删除“this”,它可以修复它。

如果没有,那么最简单的解决方案就是RxJs。首先我想你设置getSearchEvents的函数改变了事件变量? (如果可能的话,添加你的代码)

因此,当您发出事件时,您可以更改变量事件,并使用setter每次都知道事件列表:

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

在你的HTML中用[eventChange]替换[event],你就完成了;)

相关问题