Как вызвать пользовательское событие в компоненте приложения в Ioni c? - PullRequest
0 голосов
/ 22 марта 2020

В проекте ionic я хочу изменить varaible showSearchBox dynamically, поэтому. Я использовал пользовательское событие searchBox, которое вызывается другим компонентом, но searchBoxShow() никогда не вызывалось. Так как я могу решить эту проблему, чтобы я мог динамически вызывать функцию в app.component, которая будет динамически обновлять переменную searchBox.

Вот мой код app.component.html.

<ion-app>
  <ion-router-outlet style="margin-top: 50px; bottom: 0px;" *ngIf="showSearchBox" (searchBox)="searchBoxShow()"></ion-router-outlet>
  <ion-router-outlet *ngIf="!showSearchBox" (searchBox)="searchBoxShow()" ></ion-router-outlet>
</ion-app>

И код other.component.ts.

@Output('searchBox') showSearchBox = new EventEmitter();

ionViewDidEnter() {
  this.showSearchBox.emit();
}

1 Ответ

0 голосов
/ 22 марта 2020

Создать службу событий. В EventService.ts:

    export class EventService {
    private dataObserved = new BehaviorSubject<any>('');
    currentEvent = this.dataObserved.asObservable();
    constructo(){}

    publish(param):void {
      this.dataObserved.next(param);
    }
   }

Для публикации события из примера page1:

    constructor(public eventService:EventService){}
updatePost(value){
this.eventService.publish('show:searchbar');
} 

В app.component.ts:

constructor(public eventService:EventService){
  eventService.currentEvent.subscribe(value=>{
if(value=='show:searchbar'){
//do something eachtime event is emited
}   
});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...