我在 Angular 10 应用程序中使用 PrimeNG 10.0.3。在其中我导入了几个 PrimeNG 组件并毫无问题地使用它们。但是,当我尝试使用 TabView 模块时,我收到 error NG8001: 'p-tabView' is not aknown element 以及 error NG8001: 'p-tabPanel' is not aknown element。
我创建了一个名为 primng.module 的模块,在其中托管所有 PrimeNG 导入:
import { NgModule } from '@angular/core';
import { ButtonModule } from 'primeng/button';
import { BlockUIModule } from 'primeng/blockui';
import { ToastModule } from 'primeng/toast';
import { DialogModule } from 'primeng/dialog';
import { ConfirmDialogModule } from 'primeng/confirmdialog';
import { OverlayPanelModule } from 'primeng/overlaypanel';
import { PanelModule } from 'primeng/panel';
import { CardModule } from 'primeng/card';
import { SidebarModule } from 'primeng/sidebar';
import { InputMaskModule } from 'primeng/inputmask';
import { PasswordModule } from 'primeng/password';
import { TableModule } from 'primeng/table';
import { TabViewModule } from 'primeng/tabview';
import { ConfirmationService, MessageService } from 'primeng/api';
@NgModule({
imports: [
],
exports: [
ButtonModule,
BlockUIModule,
ToastModule,
DialogModule,
ConfirmDialogModule,
OverlayPanelModule,
PanelModule,
CardModule,
SidebarModule,
InputMaskModule,
PasswordModule,
TableModule,
TabViewModule
],
providers: [
MessageService,
ConfirmationService
]
})
export class PrimengModule { }
然后我将此模块导入为:
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { PrimengModule } from '../../primeng.module';
...
const routes: Routes = [
...
];
@NgModule({
declarations: [
...
],
imports: [
RouterModule.forChild(routes),
PrimengModule
],
exports: [
RouterModule
]
})
export class AdminRoutingModule { }
最后,我将 TabView 用作:
<p-tabView>
<p-tabPanel header="Header 1">
Content 1
</p-tabPanel>
<p-tabPanel header="Header 2">
Content 2
</p-tabPanel>
<p-tabPanel header="Header 3">
Content 3
</p-tabPanel>
</p-tabView>
我使用任何其他模块都没有遇到问题,只是 TabView。
我错过了什么?
谢谢。
好吧,事实证明这与 PrimeNG 无关。我拥有 p-tabView 标记的托管组件被错误地声明在另一个模块中,该模块对我的 primeng.module.ts 一无所知,自然也不知道如何处理 TabView。
经验教训:要小心在哪个模块中声明每个组件。确保模块了解您需要在组件中使用的功能。
嘿,当我使用 primeng TabMenuModule 时,我遇到了类似的错误,所以这只是模块问题,我将其导入到错误的模块中,因为我的组件是在应用程序模块中声明的,但我正在另一个模块中导入 TabMenuModule,因为我认为它是关联的对此。所以这与primeng无关。