我正在使用Ngrx和Angular材料开发新的Angular 6应用程序。我正在创建将由公司中的许多开发人员使用的基本应用程序。我的问题是在要创建的对话框redux系统上。
我将首先分享我的实际代码,然后我将解释问题和尝试的内容。
我的目标:在我的应用程序中的任何地方,我只想调用一个操作即可打开自定义对话框(特定于每个功能)。该应用程序应打开多个全屏对话框。
这是我的简化架构:
AppModule
CoreModule
DialogsModule (StoreModule.forFeature('dialog', dialogReducer) / Effects.forFeature([DialogEffects]))
FeatureAModule (contains specific dialogs component)
FeatureBModule (contains specific dialogs component)
Run Code Online (Sandbox Code Playgroud)
我想要的,在我的应用程序中的任何地方:
// Random Feature
openDialog(): void {
const payload: {
componentOrTemplateRef: MyDialogComponent, // The dialog, create by dev, in a specific feature
config: {
id: 'my-custom-id',
data: {
... // MAT_DIALOG_DATA
}
}
};
this.store.dispatch(new OpenDialogAction(payload));
}
Run Code Online (Sandbox Code Playgroud)
我的实际对话框Redux:
dialog.action.ts
export enum DialogActionTypes {
OPEN = '[DIALOG] OPEN',
SAVE_REF = '[DIALOG] SAVE_REF' // use to store dialog reference in …Run Code Online (Sandbox Code Playgroud)