【问题标题】:Angular 7 : ERROR Error: Uncaught (in promise): Error: StaticInjectorError(AppModule)[MenuWidgetComponent -> TripsMenu]:Angular 7:错误错误:未捕获(承诺):错误:StaticInjectorError(AppModule)[MenuWidgetComponent-> TripsMenu]:
【发布时间】:2019-07-09 14:59:38
【问题描述】:

angular 7 中,我面临以下问题,我需要在主组件中注入 MenuWidgetComponent,我已将其导入到小部件组件中并通过 index.ts 导出。但我还是得到了,

我用谷歌搜索了它,但找不到任何解决方案。我是否遗漏了代码中的某些内容?

Angular 7:错误错误:未捕获(承诺):错误: StaticInjectorError(AppModule)[MenuWidgetComponent -> TripsMenu]:

以上错误,请帮忙。

文件夹结构:

ApplicationWorkspace >
   1. GlobalApp > 
       - App > 
         - app.module
         - home Component
   2. Libs >
        - widget >
            src > 
              - MenuWidgetComponent
              - widget module
            index.ts

index.ts

export * from './lib/widgets.module';
export * from './lib/menu-widget/menu-widget.component';

app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { NxModule } from '@nrwl/nx';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { HomeComponent } from './home/home.component';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { WidgetsModule } from '@gp-angular-workspace/widgets';
@NgModule({
  declarations: [AppComponent, HomeComponent],
  imports: [
    BrowserModule,
    NgbModule.forRoot(),
    NxModule.forRoot(),
    AppRoutingModule,
    WidgetsModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule {}

主页.html

<div class="home" background="assets/images">
  <pfj-menu-widget></pfj-menu-widget>
</div>

widget.module.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { WidgetWrapperComponent } from './widget-wrapper/widget-wrapper.component';

@NgModule({
  imports: [CommonModule],
  declarations: [MenuWidgetComponent],
  exports: [ModalWidgetComponent]
})
export class WidgetsModule {}

【问题讨论】:

  • 您的源代码中的 TripsMenu 在哪里?
  • @HienNguyen 我已经在widgetsfolder 里面创建了它,在menu-widget 文件夹里面> menu-widget.component 文件和tripsMenu.ts 文件widget > src > - MenuWidgetComponent > -1。 menu-widget.component -2。 trips-menu.ts - 小部件模块
  • 尝试将子组件添加到 module.ts 定义中的 entryComponents 中。

标签: html angular typescript angular6 angular7


【解决方案1】:

这应该可以解决您的问题:

@NgModule({
  declarations: [AppComponent, HomeComponent],
  imports: [
    BrowserModule,
    NgbModule.forRoot(),
    NxModule.forRoot(),
    AppRoutingModule,
    WidgetsModule
  ],
  providers: [],
  entryComponents: [
    WidgetsModule
  ],
  bootstrap: [AppComponent]
})

任何你想注入另一个组件的东西都必须定义为入口组件。这就像你将一个组件注入到 mat-dialog 中一样。

请参阅:https://angular.io/guide/entry-components 了解更多信息。

【讨论】:

  • 嗨@JoshHarkema,我也试过了,但我得到了这个错误,未捕获的错误:WidgetsModule 不能用作入口组件。
  • 我明天把它转起来看看能不能弄明白。
【解决方案2】:

我错过了在小部件模块中导入 TripsMenu。

import { TripsMenu } from './menu-widget/trips-menu';

它成功了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    相关资源
    最近更新 更多