MatDialog: When using in dynamically loaded component throws error No provider for MatDialog
See original GitHub issueReproduction
When using MatDialog in a dynamically loaded component it doesn’t work and throws error No provider for MatDialog.
Steps to reproduce:
- Follow the instructions in this post (https://medium.com/angular-in-depth/lazy-load-components-in-angular-596357ab05d8 ) to create a dynamically loaded component
- Add
MatDialogModuleto the imports array ofNGModulefor the dynamically loaded component. ng serveand check the error in console.
Expected Behavior
It should work without throwing any error.
Actual Behavior
Throws below error:
zone-evergreen.js:659 Unhandled Promise rejection: R3InjectorError(AppBrowserModule)[MatDialog -> MatDialog -> MatDialog]:
NullInjectorError: No provider for MatDialog! ; Zone: <root> ; Task: Promise.then ; Value: NullInjectorError: R3InjectorError(AppBrowserModule)[MatDialog -> MatDialog -> MatDialog]:
NullInjectorError: No provider for MatDialog!
at NullInjector.get (http://localhost:4200/vendor.js:34269:27)
at R3Injector.get (http://localhost:4200/vendor.js:48199:33)
at R3Injector.get (http://localhost:4200/vendor.js:48199:33)
at R3Injector.get (http://localhost:4200/vendor.js:48199:33)
at NgModuleRef$1.get (http://localhost:4200/vendor.js:65751:33)
at Object.get (http://localhost:4200/vendor.js:63486:35)
at getOrCreateInjectable (http://localhost:4200/vendor.js:38115:39)
at Module.ɵɵdirectiveInject (http://localhost:4200/vendor.js:52134:12)
at NodeInjectorFactory.MyDynamicallyLoadedComponent_Factory [as factory]
Environment
- Angular: 10.0.0-next.6 (same behavior in other versions e.g. 9.x)
- CDK/Material: 9.2.3
- Browser(s): Chrome
- Operating System (e.g. Windows, macOS, Ubuntu): Windows
Issue Analytics
- State:
- Created 3 years ago
- Reactions:3
- Comments:19 (9 by maintainers)
Top Results From Across the Web
NullInjectorError: No provider for MatDialog, even though I ...
I'm trying to create an upload feature module but I'm getting an error with MatDialog. I've already imported it in the module.ts and...
Read more >Learn Angular : Testing Component With Material Dialog
You will getting the following dependency error related to MatDialog , NullInjectorError: No provider for MatDialog! You have two components in ...
Read more >Angular Material Dialog: A Complete Example
In this post, we are going to go through a complete example of how to build a custom dialog using the Angular Material...
Read more >mat-dialog-close not working - You.com | The AI Search ...
I tried to use dialogRef into the component but I get the error No provider for matdialogRef although I have imported the Class...
Read more >Angular Dynamic Components: Building a Dialog System
Because of the broad use of the word "dynamic", one could think that you could "dynamically" load just any component from the internet...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found

Hello, any news on this? I am having a similar issue. Thanks.
I’ve created a StackBlitz that shows the issue: https://stackblitz.com/edit/19335-before?file=src/main.ts. Here is an example with fix as per (2): https://stackblitz.com/edit/19335-with-fix?file=src/main.ts
The code responsible for loading the actual module with it’s providers is the following. Disclaimer: Can still be optimized with parallel loading but here it’s sufficient for the example:
Closing as this seems to work as expected. Please let us know if this does not work. An issue with an updated StackBlitz would be great. Thanks!