应用程序的结构:Angular2模态对话框
AppService服务 AppComponent - > HeroComponent - > WeaponComponent - > ButtonComponent
当有人点击该按钮(ButtonComponent),我想在打开一个模式对话框AppComponent。
我能想到的最好的办法是让在AppService服务一个dialogObservable。 ButtonComponent设置observable,AppComponent监听它,并在有对话框设置时显示对话框。
这已经感觉有点乱。
但使情况变得更糟,我还需要在对话框按钮。当有人点击“确定”按钮时,我想从WeaponComponent调用一个动作。就我所知,这是不可能的。那么我该怎么做?在服务中创建另一个observable,并在WeaponComponent中监听它。
这种感觉很凌乱,我觉得必须有一个更好的办法。我无法弄清楚。
如果我正确理解你,我以类似的方式去做。我在服务中创建模式。但我最大的问题是如何处理对话框中的按钮点击。我希望对话框中按钮的点击事件触发打开对话框的组件中的处理程序,而不是在对话框本身或服务中。 我可以在打开对话框时使用该功能。但它被拉出了它的范围。因此,从该事件处理函数中,我无法再访问原始组件。所以我仍然坚持这一点。 – Kris
你的模块应该在你的模块基础组件中,这样它仍然在它的模块范围内,但是你使用css将它放置到全屏+顶部z-index并完成。 – Supamiu
在我的情况下,这是不可能的,不幸的是。另外,对话只是一个例子,但也可能是应用程序中某处的不同警报消息,但在组件外部。现在,我通过将“this”传递给模式来解决这个问题,尽管它有点麻烦...... – Kris