我如何从一个MudDialog访问组件?



下面的代码返回一个idialgreference:

IDialogReference myComponentDialog = DialogService.Show<MyComponent>("MyComponent", parameters, options);

我不能传递引用作为参数,所以我希望有一些方法从idialgreference中提取"MyComponent。

这样我就可以从MyComponent中调用一个方法。

MudDialog没有在内部维护对作为内容使用的组件的组件引用。

如果你真的必须从对话框外部与内容组件通信,那么你可以使用EventBus。

  1. 创建Wasm事件总线:https://github.com/cpear/BlazorComponentBus
  2. 从MudDialog外部发布事件
  3. 从内容组件订阅事件
  4. 通过调用您想从MudDialog外部调用的方法来响应内容组件中的事件。

的意见:

当显示一个MudDialog时,那么唯一的交互应该是与UI组件,所以用户不应该能够从内容组件外部发起一个活动,所以不确定为什么你需要从外部向一个活动对话框发送消息。

也许该对话框应该根据事件(可能是来自服务器或wasm后台服务的SignalR)进行更新。在这种情况下,您的内容组件可以直接订阅该事件,而不是对话框外部的另一个组件处理该事件,然后尝试调用活动对话框内容组件上的方法。

最新更新