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

问题描述 投票:0回答:2

我尝试使用组件“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)是来自我的输出的数据

javascript angular typescript ionic-framework
2个回答
0
投票

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

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

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

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

在您的HTML中使用[eventChange]替换[event]并完成;)


0
投票

您需要使用rxjs observable或subject。另一个选择是使用服务,详细信息请参阅此答案https://stackoverflow.com/a/35878524/3211852

© www.soinside.com 2019 - 2024. All rights reserved.