下面的代码返回一个idialgreference:
IDialogReference myComponentDialog = DialogService.Show<MyComponent>("MyComponent", parameters, options);
我不能传递引用作为参数,所以我希望有一些方法从idialgreference中提取"MyComponent。
这样我就可以从MyComponent中调用一个方法。
MudDialog没有在内部维护对作为内容使用的组件的组件引用。
如果你真的必须从对话框外部与内容组件通信,那么你可以使用EventBus。
- 创建Wasm事件总线:https://github.com/cpear/BlazorComponentBus
- 从MudDialog外部发布事件
- 从内容组件订阅事件
- 通过调用您想从MudDialog外部调用的方法来响应内容组件中的事件。
的意见:
当显示一个MudDialog时,那么唯一的交互应该是与UI组件,所以用户不应该能够从内容组件外部发起一个活动,所以不确定为什么你需要从外部向一个活动对话框发送消息。
也许该对话框应该根据事件(可能是来自服务器或wasm后台服务的SignalR)进行更新。在这种情况下,您的内容组件可以直接订阅该事件,而不是对话框外部的另一个组件处理该事件,然后尝试调用活动对话框内容组件上的方法。