Angular ngx引导/tabs 3.1.1在内部模块中提供StaticInjectorError(AppModule)[TabHeadingDirective->;TabDirective]

Angular ngx引导/tabs 3.1.1在内部模块中提供StaticInjectorError(AppModule)[TabHeadingDirective->;TabDirective],angular,ngx-bootstrap,Angular,Ngx Bootstrap,我试图在angular 6项目的内部模块中使用ngx引导/tabs组件,但在console中出现此错误,并导致渲染崩溃: ERROR Error: Uncaught (in promise): Error: StaticInjectorError(AppModule)[TabHeadingDirective -> TabDirective]: StaticInjectorError(Platform: core)[TabHeadingDirective -> TabDir

我试图在angular 6项目的内部模块中使用ngx引导/tabs组件,但在console中出现此错误,并导致渲染崩溃:

   ERROR Error: Uncaught (in promise): Error: StaticInjectorError(AppModule)[TabHeadingDirective -> TabDirective]: 
  StaticInjectorError(Platform: core)[TabHeadingDirective -> TabDirective]: 
    NullInjectorError: No provider for TabDirective!
Error: StaticInjectorError(AppModule)[TabHeadingDirective -> TabDirective]: 
  StaticInjectorError(Platform: core)[TabHeadingDirective -> TabDirective]: 
    NullInjectorError: No provider for TabDirective!
...
如果我在app.module.ts中导入此组件,一切正常,当我尝试在子模块(称为共享)中使用它时,我会在顶部看到错误。 模块的配置文件(shared.module.ts)如下所示:

...
import { TabsModule } from 'ngx-bootstrap/tabs';
@NgModule({
  imports: [
...
TabsModule,
...
],
})
export class SharedModule { }

我不知道如何解决它,有人能帮我吗?

您需要在导入模块的末尾添加.forRoot(),就像这样:
TabsModule.forRoot()

更新


您还需要将SharedModule导入根模块,例如AppModule

您必须验证TabModule中没有命名为类似的变量或属性

我的情况是:

我有一个自定义组件,它有一个属性
@Input()选项卡:string='0'参数以选择选项卡集中的选项卡

ERROR Error: StaticInjectorError(AppModule)[TabDirective -> TabsetComponent]: 
  StaticInjectorError(Platform: core)[TabDirective -> TabsetComponent]: 
    NullInjectorError: No provider for TabsetComponent!
    at NullInjector.push../node_modules/@angular/core/fesm5/core.js.NullInjector.get (core.js:691) ...
这是我的自定义组件:

<my-component [datos]="datos" [tab]="tab"></my-component>
@Input()tabId:string='0'

我还将
ngx引导的
TabModule
更改为
ng引导的
NgbModule


这对我来说是个难题。你的问题是什么?

我也尝试过这样做,但没有成功,这给了我同样的错误。Seams应该与TabDirective的提供者相关。也许我应该为我正在使用的Tabs组件声明一些提供者…你能更新问题吗?你是如何尝试在组件中使用它的,以及NgModule看起来如何?dince你在问题中已经将它剥离了。我怀疑你没有在一个模块中正确包装东西,我刚刚注意到模块的名称,你是否已将SharedModule导入根模块,例如“AppModule”?你是否懒得在应用程序中加载任何东西?启动Angular 6依赖项注入的行为不同,最简单的方法是将Tabs forRoot()模块导入到您计划使用相同问题的模块中-除了BsDropdownModule。。。(其他非valor模块工作…)我也遇到了同样的问题,多亏了您的回复,我才得以解决。非常感谢你。
<my-component [datos]="datos" [tabId]="tabId"></my-component>