angular – 如何在NgbModal中从延迟加载的模块中打开组件?
发布时间:2020-12-17 06:59:39 所属栏目:安全 来源:网络整理
导读:我在尝试从延迟加载的模块加载动态组件时遇到问题.更准确地说,我试图在一个模态( https://ng-bootstrap.github.io/#/components/modal/examples)中打开登录组件,而不是在一个单独的页面中,同时保持单独的登录路由/页面完整. 现在,在我看来,我必须在app模块中
我在尝试从延迟加载的模块加载动态组件时遇到问题.更准确地说,我试图在一个模态(
https://ng-bootstrap.github.io/#/components/modal/examples)中打开登录组件,而不是在一个单独的页面中,同时保持单独的登录路由/页面完整.
现在,在我看来,我必须在app模块中急切加载登录组件,这只不过是一个临时的黑客.所以,我不想要这个解决方案. 我试过直接使用该组件,但正如我所料,它给了我以下错误: 找不到SigninComponent的组件工厂.你有没有把它添加到@ NgModule.entryComponents? 我搜索并发现此链接:https://github.com/angular/angular/issues/14324但无法使其工作. 我很惊讶我找不到这个问题的正确解决方案,因为这是一个非常常见的用例.任何帮助或建议表示赞赏.谢谢! 解决方法
不通过选择器直接在模板中使用的组件必须添加到@NgModule装饰器的模块的entryComponents数组中.在bootstrap中打开模态时,实际上并没有在任何地方使用组件的选择器,所以你的SignInComponent就是这样一个例子.
你会做这样的事情 @NgModule({ //... declarations: [ SignInComponent,],entryComponents: [ SignInComponent,] }) export class LazyLoadedModule { } 标记组件以进行编译,即使它未通过其选择器在任何其他组件的模板中引用. 您可以在官方角度文档here中阅读有关入口组件,它们如何工作以及为什么需要以这种方式声明它们的更多信息.以及此StackOverflow post. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |