gpt4 book ai didi

Angular CLI 生产构建,未知元素

转载 作者:行者123 更新时间:2023-12-05 07:42:25 24 4
gpt4 key购买 nike

在我的主要组件的 html 模板中,我使用了来自已导入模块的组件中的元素。当我尝试构建它时,出现以下错误。

'df-dashboard-widget' is not a known element:
1. If 'df-dashboard-widget' is an Angular component, then verify that it is part of this module.
2. If 'df-dashboard-widget' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.

还有这个错误:

ERROR in Template parse errors:
Can't bind to 'options' since it isn't a known property of 'df-dashboard-grid'.
1. If 'df-dashboard-grid' is an Angular component and it has 'options' input, then verify that it is part of this module.
2. If 'df-dashboard-grid' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component.

我的 HTML 模板如下所示:

<df-dashboard-grid [options]="options">
<df-dashboard-widget [item]="item" *ngFor="let item of dashboard">
<ng-container *ngComponentOutlet="getComponent(item.tag); injector: getProvider(item)"></ng-container>
</df-dashboard-widget>
</df-dashboard-grid>

我已经导入了包含 df-dashboard-grid 组件的模块,并且该组件被导出df-dashboard-widget 也会出现同样的问题。还有一个错误说 ngComponentOutlet 不是 ng-container 的属性,尽管我已经从 Angular 导入了 CommonModule。我的主模块装饰器看起来像这样:

@NgModule({
declarations: [
DashboardComponent
],
imports: [
BrowserModule,
CommonModule,
HttpModule,
DashboardGridModule
].concat(Configuration.initialization.modules),
providers: [],
bootstrap: [DashboardComponent]
})

使用组件装饰器的模块如下所示:

@NgModule({
declarations: [
DashboardGridComponent,
DashboardWidgetComponent,
DashboardGuideComponent,
DashboardPreviewComponent
],
imports: [
CommonModule
],
exports: [DashboardGridComponent, DashboardWidgetComponent],
})

此错误仅在生产模式下发生。在开发模式下,一切正常。

最佳答案

我自己找到了这个问题的答案。 Apperently 它与此有关:

@NgModule({
declarations: [
DashboardComponent
],
imports: [
BrowserModule,
CommonModule,
HttpModule,
DashboardGridModule
].concat(Configuration.initialization.modules),
providers: [],
bootstrap: [DashboardComponent]
})

在我的配置文件中,我也使用了一系列模块(由于某些原因)。在装饰器(或至少是主模块的装饰器)中,您不允许在装饰器中包含任何函数,即使它返回有效的数据类型。

我通过添加另一个我称之为 ImportModule 的模块解决了这个问题。

@NgModule({
declarations: [],
imports: Configuration.initialization.modules,
exports: Configuration.entryComponents,
providers: [],
bootstrap: []
})

这对我有用,因为我有一个文件,其中包含所有使用的模块和组件,它们都在一个单独的常量文件中。 Configuration 有一个包含所有已用模块的数组,entryComponents 是一个包含所有已用组件的数组。在主模块中,我导入了这个模块。

关于Angular CLI 生产构建,未知元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44571841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com