Ionic2:如何从模态组件(从 ModalController 创建)中捕获事件?

Jos*_*vid 5 ionic2

有没有一种方法可以捕获从 Modal 组件(使用 ModalController 创建的)中发出的本地事件而不需要关闭,并且不必使用全局Events或服务?

执行此操作的 Angular 方法是使用listenRenderer 但在这种情况下我不知道如何获取对组件实例的正确引用。

我的组件.ts

...
export class MyComponent {
  @Output() myAwesomeEvent = new EventEmitter<string>();

  fireEvent() {
    this.myAwesomeEvent.emit('payload');
  }
}
Run Code Online (Sandbox Code Playgroud)

父.ts

...
const modal = this.modalCtrl.create(MyComponent);
// how do I catch 'myAwesomeEvent' emitted from within MyComponent?
...
Run Code Online (Sandbox Code Playgroud)

小智 5

IONIC 版本 4这可能是一个解决方法?(在我的应用程序中似乎工作正常)

let eventEmitter= new EventEmitter();
eventEmitter.subscribe(res=>{
  console.log("emitterResult", res)
});

  const modal = await this.modalCtrl.create({
  component: MyComponent,
  componentProps: {
    clickFavorite: eventEmitter
  }
});
Run Code Online (Sandbox Code Playgroud)

我的组件:

export class MyComponent{    
@Output() clickFavorite= new EventEmitter<any>();

  favorite(evt){
      this.clickFavorite.emit("OK");}
  }
}
Run Code Online (Sandbox Code Playgroud)


mis*_*130 1

instance以模式访问属性。

const modal = this.modalCtrl.create(MyComponent);
modal.didEnter.subscribe(() => {
    modal.instance.myAwesomeEvent.subscribe(....)
});
Run Code Online (Sandbox Code Playgroud)

离子版本 3:

this.modalCtrl.create(MyComponent).present().then((result) =>{
    result.instance.myAwesomeEvent.subscribe(....)
});
Run Code Online (Sandbox Code Playgroud)