首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么运行时填充的数组在NgModule声明上不起作用?

在Angular中,NgModule是一个装饰器函数,用于定义一个模块。NgModule装饰器函数接受一个元数据对象,其中包含了该模块的配置信息,包括声明的组件、指令、管道等。

运行时填充的数组是指在NgModule的元数据对象中使用的providers数组,用于提供依赖注入所需的服务。这个数组在NgModule声明上不起作用的原因是,NgModule的元数据对象在编译时就已经被静态解析了,而运行时填充的数组是在运行时动态添加的。

换句话说,NgModule的元数据对象在编译时就已经确定了,无法在运行时修改。因此,无论在providers数组中添加了哪些服务,都不会对NgModule的元数据对象产生影响。

要解决这个问题,可以考虑使用@Injectable装饰器来提供服务,而不是在NgModule的providers数组中声明。@Injectable装饰器可以直接应用于服务类,使其成为可注入的依赖项。这样,无论是在NgModule中还是在组件中,都可以通过依赖注入的方式使用该服务。

总结起来,运行时填充的数组在NgModule声明上不起作用是因为NgModule的元数据对象在编译时就已经确定了,无法在运行时修改。为了解决这个问题,可以考虑使用@Injectable装饰器来提供服务,而不是在NgModule的providers数组中声明。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Angular系列教程-第五节

    1.模块 NgModule 是一个带有 @NgModule 装饰器的类。 @NgModule 的参数是一个元数据对象,用于描述如何编译组件的模板,以及如何在运行时创建注入器。 它会标出该模块自己的组件、指令和管道,通过 exports 属性公开其中的一部分,以便外部组件使用它们。 NgModule 还能把一些服务提供商添加到应用的依赖注入器中。 NgModule 的元数据会做这些: 声明某些组件、指令和管道属于这个模块。 公开其中的部分组件、指令和管道,以便其它模块中的组件模板中可以使用它们。 导入其它带有组件、指令和管道的模块,这些模块中的元件都是本模块所需的。 提供一些供应用中的其它组件使用的服务。 每个 Angular 应用都至少有一个模块,也就是根模块。 你可以引导那个模块,以启动该应用。

    02
    领券