在延迟加载模块中使用 Angular 组件

2024-02-08

我想在应用程序的多个部分中使用 Angular 组件,包括在延迟加载模块内的组件中。我不知道如何声明在惰性模块中使用它的组件。我将向您展示不同文件的一些相关部分:

应用程序模块.ts

import { FpgTimeComponent } from './fpgTime/fpg-time.component';


@NgModule({
  declarations: [
      AppComponent, 
      (...)
      FpgTimeComponent

应用程序路由.ts

const appRoutes: Routes = [

    { path: '', redirectTo: 'customer', pathMatch: 'full' },
    {
        path: 'customer',
        component: CustomerComponent
    },
    {
        path: 'lazy',
        loadChildren: 'app/lazy/lazy.module#LazyModule'
    }
];

惰性模块.ts

import { FpgTimeComponent } from '../fpgTime/fpg-time.component';

import { LazyComponent }   from './lazy.component';
import { routing } from './lazy.routing';

@NgModule({
    imports: [routing],
    declarations: [
        LazyComponent, 
        FpgTimeComponent
    ]
})

该应用程序加载,但是当我转到惰性路线时,它会抛出以下错误:

未捕获(承诺):错误:类型 FpgTimeComponent 是 2 个模块的声明:AppModule 和 LazyModule!请考虑 将 FpgTimeComponent 移至导入 AppModule 的更高模块并 惰性模块。您还可以创建一个新的 NgModule 来导出和 包含 FpgTimeComponent 然后在 AppModule 中导入该 NgModule 并 惰性模块。

我不会在任何地方导入 LazyModule,因为它是延迟加载的。那么,我如何声明组件 FpgTimeComponent 以便能够在惰性模块(以及非惰性组件)中使用它?

提前致谢,


FpgTimeComponent不是将要加载的惰性模块文件的一部分,所以你不能这样做。想想看,您正在尝试在惰性模块中导入一个组件,该模块对此一无所知,因为它没有在该模块中定义,并且它也没有在您导入的任何其他模块中定义。LazyModule。那么它从哪里获取组件呢?

Add FpgTimeComponent to a SharedModule并导入SharedModule在你的LazyModule,或移动FpgTimeComponent给你的LazyModule。一旦你做了其中之一,它就应该起作用了。

前者可能是更好的方法,因为我可以保证,随着您继续开发,您将继续遇到与其他组件/惰性模块相同的错误。如果您在多个地方使用这些组件,那么它们应该位于一个SharedModule as Angular 最佳实践定义 https://angular.io/guide/sharing-ngmodules, 然后SharedModule应该导入到所有惰性模块中。

这是一个例子。

共享模块:

import { FpgTimeComponent } from './some/path';

@NgModule({
    declarations: [
        FpgTimeComponent
    ],
    exports: [
        FpgTimeComponent
    ]
})

惰性模块:

import { SharedModule } from '../shared/shared.module';

import { LazyComponent }   from './lazy.component';
import { routing } from './lazy.routing';

@NgModule({
    imports: [
        routing,
        SharedModule
    ],
    declarations: [
        LazyComponent
    ]
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在延迟加载模块中使用 Angular 组件 的相关文章

随机推荐

  • `Control.Dispose()` 是否会删除所有事件注册?

    当我打电话时Dispose on a System Windows Forms Control 它会自动删除所有事件注册吗 例如 以下内容就足够了 var button new Button button Click someObject
  • Typescript:TSX 文件在 Chrome 中显示为空白

    当尝试在 Google Chrome 中调试 TypeScript 应用程序时 ts 文件在检查器中正确进行源映射 但 tsx 文件显示完全为空 这并不能真正帮助我调试它们 如何正确地将 tsx 文件获取到源映射 我建议您尝试为使用的 We
  • PYTHON 使用退出键退出时出现问题

    我在使用以下代码时遇到问题 它似乎对退出键有反应 但它冻结得很厉害 我将 pyscripter 与 python 2 7 和 pygame 一起使用 An example implementation of the algorithm de
  • React createElement 与 CloneElement

    谁能告诉我如果使用cloneElement 在现有元素实例上 或createElement 在react Element类上 哪一个在性能方面更好 有时克隆某些东西比创建新实例更快 请告诉我 谢谢 Using cloneElement通常会
  • ASP.NET MVC 3 DropDownList 选定索引已更改

    我有一项功能 允许用户根据自己的状态代码过滤记录 在菜单中 我有一个自定义过滤器部分 h3 Custom Filters h3 br ul Html RenderAction GetGroups Manage ul 我的部分视图如下所示 m
  • ReplayKit 在应用程序的后台模式或应用程序外部停止屏幕录制?

    我已经在应用程序的前台模式下使用 ReplayKit 实现了屏幕录制 但是 当我使用主页按钮离开应用程序时 应用程序会停止后台记录 gt App Store 中有一个可以进行后台屏幕录制的应用程序 gt 如果我必须使用广播上传和 UI 扩展
  • 简单地将 Entity Framework Core 添加到基本 Azure 函数应用程序会导致错误

    描述起来非常简单 使用 Visual Studio 2019 16 4 1 中的 Azure Functions 模板创建新的解决方案 将 TargetFramework 更改为 NET Core 3 1 它将使用 Microsoft NE
  • 如何加载依赖程序集?

    我有一个项目处理器 它依赖于其他 2 个项目 当我编译项目时 我在 Bin 文件夹中得到 dll Processor dll 和其他项目的依赖 dll Processor dll BusinessAction dll 和 Repositor
  • Spring实际上是否使用REQUIRES_NEW启动一个新事务?

    我的 spring 4 1 1 应用程序部署在 JBoss 6 10 final 实例上 因此它使用基于容器的事务管理器和数据源 对于消息传递 我使用 TIBCO EMS 8 1 并设置了 XA 队列连接工厂 Java版本是1 8 0 20
  • ctrl-d 没有停止 while(getchar()!=EOF) 循环[重复]

    这个问题在这里已经有答案了 Here is my code I run it in ubuntu with terminal when I type a CtrlD in terminal the program didn t stop b
  • ASP .NET MVC 3 - 如何提交嵌套在 html 表单中的 ajax 表单

    我有一个 ASP NET MVC 3 项目 并且我的 创建 视图之一存在问题 我有使用 ajax 表单实现的级联下拉字段 粗略地说 该视图是这样的 using Html BeginForm Html MyDropDown1 using Aj
  • 在 Linux 上安装 nloptr

    我正在尝试安装 R 包nloptr在没有互联网连接的 CentOS Linux 机器上 如下所示 install packages home ravi nloptr 1 0 4 tar gz repos NULL type source 该
  • 函数内声明的 const 数组是否存储在堆栈中?

    如果这是在函数中声明的 它会在堆栈上声明吗 它是 const 让我想知道 void someFunction const unsigned int actions 8 e1 e2 etc 是的 它们在堆栈上 您可以通过查看此代码片段来了解这
  • SAP B1,如何显示从 ItemImage 获取的图像?

    我正在从 SAP B1 服务层获取图像 在邮递员中 我可以将其视为image png 但显示它时出现问题 正确的显示方式是什么 img require fetchedImage 不起作用 我创建了一个云函数来获取图像并将其传递给客户端 但我
  • 以编程方式设置 LinearLayout 分隔线大小

    我已经尝试了多种解决方案 但似乎没有一个有效 我目前正在使用以下Drawable作为分隔线 这是水平示例 但相同的方法也适用于垂直 将高度切换为宽度 LinearLayout linearLayout set with findViewBy
  • 使用 ?与 sed

    我只想获取可能经过 gzip 压缩或未经过 gzip 压缩的文件的编号 但是 sed 中的正则表达式似乎不支持 这是我尝试过的 echo file 1 gz sed n s gz 1 p 并没有返回任何东西 然后我添加了一个 到正在分析的字
  • Julia:矢量化代码与非矢量化代码

    据我了解 Julia 应该使 for 循环更快 并且与矢量化操作一样快 我编写了一个简单函数的三个版本 该函数使用 for 循环与矢量化操作与后者使用 DataFrame 来查找距离 x rand 500 y rand 500 a rand
  • YouTube 数据 API 每日最大查询配额已降至 0,且无法设置任何数字

    我们的项目每天的查询配额限制突然降至 0 Google 没有任何解释 我们正在为我们的项目使用 YouTube Data API 并且即将发布该应用程序 因此我们要求 YouTube 增加每天的查询配额限制 然而 三天后就降为0 没有任何明
  • ag-grid 使用单个 gridOptions 在同一页面中多个实例

    我在我的应用程序中使用 ag grid 我想在同一页面上使用具有两个网格的网格选项的相同实例 ag grid 仅渲染其中一个网格 而将另一个网格留空 这个 plnkr 显示了这个问题 http plnkr co edit 4rRNRGbUo
  • 在延迟加载模块中使用 Angular 组件

    我想在应用程序的多个部分中使用 Angular 组件 包括在延迟加载模块内的组件中 我不知道如何声明在惰性模块中使用它的组件 我将向您展示不同文件的一些相关部分 应用程序模块 ts import FpgTimeComponent from