#angular #ng-zorro-antd
#angular #ng-zorro-antd
Вопрос:
Все, что я скопировал из NG-ZORRO, я также импортировал NgZorroAntdModule, но когда я пытаюсь создать проект, я столкнулся с этой ошибкой.
ОШИБКА в pages/welcome/welcome.component.ts:8:5 — ошибка NG8001: ‘nz-layout’ не является известным элементом:
- Если ‘nz-layout’ является компонентом Angular, то убедитесь, что он является частью этого модуля.
- Если ‘nz-layout’ является веб-компонентом, добавьте ‘CUSTOM_ELEMENTS_SCHEMA’ в ‘@NgModule.schemas’ этого компонента, чтобы подавить это сообщение.
Ниже приведен мой код: WelcomeModule
import { NgModule } from '@angular/core';
import { WelcomeRoutingModule } from './welcome-routing.module';
import { WelcomeComponent } from './welcome.component';
import { FormsModule } from '@angular/forms';
import {CommonModule} from '@angular/common';
import {AppModule} from '../../app.module';
import { NzGridModule } from 'ng-zorro-antd/grid';
import { NzLayoutModule } from 'ng-zorro-antd/layout';
import {NzMenuModule} from 'ng-zorro-antd/menu';
import {NzBreadCrumbModule} from 'ng-zorro-antd/breadcrumb';
import {NgZorroAntdModule} from '../../ng-zorro-antd.module';
@NgModule({
imports: [WelcomeRoutingModule,
FormsModule,
CommonModule,
AppModule,
NzLayoutModule,
NzGridModule,
NzMenuModule,
NzBreadCrumbModule,
NgZorroAntdModule],
declarations: [WelcomeComponent],
exports: [WelcomeComponent]
})
export class WelcomeModule { }
import { Component, OnInit } from '@angular/core';
import { components } from '../../model/componentMapping';
@Component({
selector: 'app-welcome',
template: `
<nz-layout>
<nz-header>
<div class="logo"></div>
<ul nz-menu nzTheme="dark" nzMode="horizontal" class="header-menu">
<li nz-menu-item nzSelected>nav 1</li>
<li nz-menu-item>nav 2</li>
<li nz-menu-item>nav 3</li>
</ul>
</nz-header>
<nz-layout>
<nz-sider nzWidth="200px" nzTheme="light">
<ul nz-menu nzMode="inline" class="sider-menu">
<li nz-submenu nzOpen nzIcon="user" nzTitle="subnav 1">
<ul>
<li nz-menu-item nzSelected>option1</li>
<li nz-menu-item>option2</li>
<li nz-menu-item>option3</li>
<li nz-menu-item>option4</li>
</ul>
</li>
<li nz-submenu nzTitle="subnav 2" nzIcon="laptop">
<ul>
<li nz-menu-item>option5</li>
<li nz-menu-item>option6</li>
<li nz-menu-item>option7</li>
<li nz-menu-item>option8</li>
</ul>
</li>
<li nz-submenu nzTitle="subnav 3" nzIcon="notification">
<ul>
<li nz-menu-item>option9</li>
<li nz-menu-item>option10</li>
<li nz-menu-item>option11</li>
<li nz-menu-item>option12</li>
</ul>
</li>
</ul>
</nz-sider>
<nz-layout class="inner-layout">
<nz-breadcrumb>
<nz-breadcrumb-item>Home</nz-breadcrumb-item>
<nz-breadcrumb-item>List</nz-breadcrumb-item>
<nz-breadcrumb-item>App</nz-breadcrumb-item>
</nz-breadcrumb>
<nz-content>Content</nz-content>
</nz-layout>
</nz-layout>
</nz-layout>
`,
styleUrls: ['./welcome.component.css']
})
export class WelcomeComponent implements OnInit {
isCollapsed = false;
size64 = '64';
size32 = '32';
title = 'Welcome to use iTool Online';
subTitle = '';
routerPath = '';
components = components;
constructor() { }
// tslint:disable-next-line:typedef
ngOnInit() {
}
}
Определение NgZorroAntdModule
import { NgModule } from '@angular/core';
import { NzAffixModule } from 'ng-zorro-antd/affix';
import { NzAlertModule } from 'ng-zorro-antd/alert';
import { NzAnchorModule } from 'ng-zorro-antd/anchor';
import { NzAutocompleteModule } from 'ng-zorro-antd/auto-complete';
import { NzAvatarModule } from 'ng-zorro-antd/avatar';
import { NzBackTopModule } from 'ng-zorro-antd/back-top';
import { NzBadgeModule } from 'ng-zorro-antd/badge';
import { NzBreadCrumbModule } from 'ng-zorro-antd/breadcrumb';
import { NzButtonModule } from 'ng-zorro-antd/button';
import { NzCalendarModule } from 'ng-zorro-antd/calendar';
import { NzCardModule } from 'ng-zorro-antd/card';
import { NzCarouselModule } from 'ng-zorro-antd/carousel';
import { NzCascaderModule } from 'ng-zorro-antd/cascader';
import { NzCheckboxModule } from 'ng-zorro-antd/checkbox';
import { NzCollapseModule } from 'ng-zorro-antd/collapse';
import { NzCommentModule } from 'ng-zorro-antd/comment';
import { NzNoAnimationModule } from 'ng-zorro-antd/core/no-animation';
import { NzTransButtonModule } from 'ng-zorro-antd/core/trans-button';
import { NzWaveModule } from 'ng-zorro-antd/core/wave';
import { NzDatePickerModule } from 'ng-zorro-antd/date-picker';
import { NzDescriptionsModule } from 'ng-zorro-antd/descriptions';
import { NzDividerModule } from 'ng-zorro-antd/divider';
import { NzDrawerModule } from 'ng-zorro-antd/drawer';
import { NzDropDownModule } from 'ng-zorro-antd/dropdown';
import { NzEmptyModule } from 'ng-zorro-antd/empty';
import { NzFormModule } from 'ng-zorro-antd/form';
import { NzGridModule } from 'ng-zorro-antd/grid';
import { NzI18nModule } from 'ng-zorro-antd/i18n';
import { NzIconModule } from 'ng-zorro-antd/icon';
import { NzInputModule } from 'ng-zorro-antd/input';
import { NzInputNumberModule } from 'ng-zorro-antd/input-number';
import { NzLayoutModule } from 'ng-zorro-antd/layout';
import { NzListModule } from 'ng-zorro-antd/list';
import { NzMentionModule } from 'ng-zorro-antd/mention';
import { NzMenuModule } from 'ng-zorro-antd/menu';
import { NzMessageModule } from 'ng-zorro-antd/message';
import { NzModalModule } from 'ng-zorro-antd/modal';
import { NzNotificationModule } from 'ng-zorro-antd/notification';
import { NzPageHeaderModule } from 'ng-zorro-antd/page-header';
import { NzPaginationModule } from 'ng-zorro-antd/pagination';
import { NzPopconfirmModule } from 'ng-zorro-antd/popconfirm';
import { NzPopoverModule } from 'ng-zorro-antd/popover';
import { NzProgressModule } from 'ng-zorro-antd/progress';
import { NzRadioModule } from 'ng-zorro-antd/radio';
import { NzRateModule } from 'ng-zorro-antd/rate';
import { NzResultModule } from 'ng-zorro-antd/result';
import { NzSelectModule } from 'ng-zorro-antd/select';
import { NzSkeletonModule } from 'ng-zorro-antd/skeleton';
import { NzSliderModule } from 'ng-zorro-antd/slider';
import { NzSpinModule } from 'ng-zorro-antd/spin';
import { NzStatisticModule } from 'ng-zorro-antd/statistic';
import { NzStepsModule } from 'ng-zorro-antd/steps';
import { NzSwitchModule } from 'ng-zorro-antd/switch';
import { NzTableModule } from 'ng-zorro-antd/table';
import { NzTabsModule } from 'ng-zorro-antd/tabs';
import { NzTagModule } from 'ng-zorro-antd/tag';
import { NzTimePickerModule } from 'ng-zorro-antd/time-picker';
import { NzTimelineModule } from 'ng-zorro-antd/timeline';
import { NzToolTipModule } from 'ng-zorro-antd/tooltip';
import { NzTransferModule } from 'ng-zorro-antd/transfer';
import { NzTreeModule } from 'ng-zorro-antd/tree';
import { NzTreeSelectModule } from 'ng-zorro-antd/tree-select';
import { NzTypographyModule } from 'ng-zorro-antd/typography';
import { NzUploadModule } from 'ng-zorro-antd/upload';
import { NzResizableModule } from 'ng-zorro-antd/resizable';
import { NzPipesModule } from 'ng-zorro-antd/pipes';
@NgModule({
exports: [
NzAffixModule,
NzAlertModule,
NzAnchorModule,
NzAutocompleteModule,
NzAvatarModule,
NzBackTopModule,
NzBadgeModule,
NzButtonModule,
NzBreadCrumbModule,
NzCalendarModule,
NzCardModule,
NzCarouselModule,
NzCascaderModule,
NzCheckboxModule,
NzCollapseModule,
NzCommentModule,
NzDatePickerModule,
NzDescriptionsModule,
NzDividerModule,
NzDrawerModule,
NzDropDownModule,
NzEmptyModule,
NzFormModule,
NzGridModule,
NzI18nModule,
NzIconModule,
NzInputModule,
NzInputNumberModule,
NzLayoutModule,
NzListModule,
NzMentionModule,
NzMenuModule,
NzMessageModule,
NzModalModule,
NzNoAnimationModule,
NzNotificationModule,
NzPageHeaderModule,
NzPaginationModule,
NzPopconfirmModule,
NzPopoverModule,
NzProgressModule,
NzRadioModule,
NzRateModule,
NzResultModule,
NzSelectModule,
NzSkeletonModule,
NzSliderModule,
NzSpinModule,
NzStatisticModule,
NzStepsModule,
NzSwitchModule,
NzTableModule,
NzTabsModule,
NzTagModule,
NzTimePickerModule,
NzTimelineModule,
NzToolTipModule,
NzTransButtonModule,
NzTransferModule,
NzTreeModule,
NzTreeSelectModule,
NzTypographyModule,
NzUploadModule,
NzWaveModule,
NzResizableModule,
NzPipesModule,
]
})
export class NgZorroAntdModule {
}
это моя структура
введите описание изображения здесь
Комментарии:
1. Не могли бы вы показать, как
NgZorroAntdModule
определяется модуль?2. Да, ниже приведено определение для NgZorroAntdModule
3. Извините, я добавил в основной текст.
Ответ №1:
Наконец, я решил эту проблему. Это связано с тем, что конфигурация маршрута, она должна использоваться с loadChildren, А НЕ использовать component
const routes: Routes = [
{ path: '', pathMatch: 'full', redirectTo: '/login' },
{ path: 'login', loadChildren: () => import('./login/login.module').then(m => m.LoginModule) },
{ path: 'pages', loadChildren: () => import('./pages/pages.module').then(m => m.PagesModule)}
];
Ранее это было, как показано ниже, это неверно:
const routes: Routes = [
{ path: '', pathMatch: 'full', redirectTo: '/login' },
{ path: 'login', component: LoginComponent },
{ path: 'pages', component: PagesComponent }
];
Комментарии:
1. У меня такая же проблема. Не могли бы вы пояснить, почему вы можете решить это так?
2. @Henry Не могли бы вы пояснить, почему использование ‘component: xyz’ вызывает ошибку?
Ответ №2:
Зарегистрируйте компоненты в объявлениях вашего app.module
@NgModule({
declarations: [AppComponent, LoginComponent, PagesComponent],
...
})