2017-02-15 48 views
1

是否有一种方法可以捕获Modal组件(使用ModalController创建)发出的本地事件而不会解散,而不必使用全局Events或服务?Ionic2:如何从Modal组件(从ModalController创建)捕获事件?

要做到这一点的角度方法是使用listenRenderer,但我不明白如何在这种情况下获得组件实例的正确引用。

MyComponent.ts

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

    fireEvent() { 
    this.myAwesomeEvent.emit('payload'); 
    } 
} 

Parent.ts

... 
const modal = this.modalCtrl.create(MyComponent); 
// how do I catch 'myAwesomeEvent' emitted from within MyComponent? 
... 
+1

关闭我的头顶,我想你的情态变量将有实例属性,并从,你可以得到myAwesomeEvent所以modal.instance.myAwesomeEvent.subscribe(我需要... – misha130

+0

@ misha130究竟是什么。建立一个答案,我将接受 – JoshuaDavid

+0

提示:使用'modal.didEnter'设置处理程序,以确保''''成员可用。[详见ViewController上的文档](http://ionicframework.com/docs/) V2/API /导航/视图控制器/) – JoshuaDavid

回答

1

访问instance财产模式。

const modal = this.modalCtrl.create(MyComponent); 
modal.didEnter.subscribe(() => { 
    modal.instance.myAwesomeEvent.subscribe(....) 
});