我尝试使用组件“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)是来自我的输出的数据
首先在输入变量前面删除“this”,它可以修复它。
如果不是,那么最简单的解决方案就是RxJs。首先我想你设置getSearchEvents的函数改变了事件变量? (如果可能,添加代码)
因此,当您发出事件时,您可以更改变量事件,并使用setter让您的事件列表每次都知道它:
event = new Event();
@Input() set eventChange(event) {
this.event = event;
}
在您的HTML中使用[eventChange]替换[event]并完成;)
您需要使用rxjs observable或subject。另一个选择是使用服务,详细信息请参阅此答案https://stackoverflow.com/a/35878524/3211852