小编Jas*_* K.的帖子

没有使用 Angular Bootstrap 的 NgbDropdown 提供程序

我试图在应用程序中使用 NbgDropdown,但出现以下错误:

NullInjectorError:NgbDropdown 没有提供程序!

我的 app.module 文件如下所示:

import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
...

NgModule({
    declarations: [
        ...
    ],
    imports: [
        ...
        NgbModule.forRoot()
    ],
    providers: [
        ...
    ],
    bootstrap: [AppComponent]
})
Run Code Online (Sandbox Code Playgroud)

从其他答案来看,这看起来应该是必需的

我看到以下简短的评论可能会有所帮助,但对我来说没有意义:

/sf/answers/3264582121/

drop-down-menu ng-bootstrap angular

9
推荐指数
2
解决办法
9201
查看次数

如何在没有组件的情况下从 Angular 9+ 中的延迟加载模块动态注入服务?

我正在尝试从组件内的延迟加载模块访问服务实例。该模块没有任何可用于基于构造函数的注入的组件。Angular 文档没有帮助,我在 Medium 和类似网站上找到的所有各种教程都不适用。

以下是执行服务延迟加载的组件的代码。

await import ('./lazy.module')
  .then(module => module.LazyModule)
  .then(module => {return module;})
  .then(module => this.compiler.compileModuleAsync(module))
  .then(factory => {
    let module = factory.create(this.injector);
    this.lazyService = module.injector.get(LazyService);
  });
Run Code Online (Sandbox Code Playgroud)

问题在于,在当前组件中包含 LazyService 将无法达到延迟加载的目的,并且 get() 方法似乎需要一个类型,这种方法只会产生先有鸡还是先有蛋的问题。我将 InjectionToken 作为另一种选择,但它需要一个通用定义,再次需要导入 LazyService。

谁能解释一下延迟服务加载应该如何完成?

lazy-loading angular-services angular angular-injector

5
推荐指数
1
解决办法
3317
查看次数