尝试运行我的Angular 2 RC6应用程序时,在浏览器控制台中出现以下错误:
> Error: Template parse errors: 'header-area' is not a known element:
> 1. If 'header-area' is an Angular component, then verify that it is part of this module.
> 2. If 'header-area' is a Web Component then add "CUSTOM_ELEMENTS_SCHEMA" to the '@NgModule.schema' of this component
> to suppress this message.("
<div class="page-container">
[ERROR->]<header-area></header-area>
<div class="container-fluid">
> "): PlannerComponent@1:2
Run Code Online (Sandbox Code Playgroud)
我不明白为什么找不到该组件.我的PlannerModule看起来像这样:
@NgModule({
declarations: [
PlannerComponent,
HeaderAreaComponent,
NavbarAreaComponent,
EreignisbarAreaComponent,
GraphAreaComponent,
nvD3
],
imports: [
RouterModule,
CommonModule,
ModalModule
],
bootstrap: [PlannerComponent],
})
export class PlannerModule {}
Run Code Online (Sandbox Code Playgroud)
据我所知,ng2中的模块概念,模块的各个部分在'声明'中声明.为了完整性,这里是PlannerComponent:
@Component({
selector: 'planner',
providers: [CalculationService],
templateUrl: './planner.component.html',
styleUrls: ['./planner.component.styl']
})
export default class PlannerComponent {
}
Run Code Online (Sandbox Code Playgroud)
和HeaderAreaComponent:
@Component({
selector: 'header-area',
templateUrl: './header-area.component.html',
styleUrls: ['./header-area.component.styl']
})
export default class HeaderAreaComponent {
}
Run Code Online (Sandbox Code Playgroud)
该<header-area>
-Tag位于planner.component.html:
<div class="page-container">
<header-area></header-area>
<div class="container-fluid">
<div class="row">...
Run Code Online (Sandbox Code Playgroud)
我弄错了吗?
更新:完整代码
planner.module.ts:
import HeaderAreaComponent from '../header-area/header-area.component';
import NavbarAreaComponent from '../navbar-area/navbar-area.component';
import GraphAreaComponent from '../graph-area/graph-area.component';
import EreignisbarAreaComponent from '../ereignisbar-area/ereignisbar-area.component';
import PlannerComponent from './planner.component';
import {NgModule} from '@angular/core';
import {nvD3} from 'ng2-nvd3';
import {RouterModule} from '@angular/router';
import {CommonModule} from '@angular/common';
import {ModalModule} from 'ng2-bootstrap/ng2-bootstrap';
@NgModule({
declarations: [
PlannerComponent,
HeaderAreaComponent,
NavbarAreaComponent,
EreignisbarAreaComponent,
GraphAreaComponent,
nvD3
],
imports: [
RouterModule,
CommonModule,
ModalModule
],
bootstrap: [PlannerComponent],
})
export class PlannerModule {
// TODO: get rid of the "unused class" warning
}
Run Code Online (Sandbox Code Playgroud)
planner.component.ts
import {Component} from '@angular/core';
import CalculationService from '../_shared/services/calculation.service/calculation.service';
import HeaderAreaComponent from '../header-area/header-area.component';
@Component({
selector: 'planner',
providers: [CalculationService],
templateUrl: './planner.component.html',
styleUrls: ['./planner.component.styl']
})
export default class PlannerComponent {
}
Run Code Online (Sandbox Code Playgroud)
planner.component.html
<div class="page-container">
<header-area></header-area>
<div class="container-fluid">
<div class="row">
<div class="col-xs-2 col-sm-1 sidebar">
<navbar-area></navbar-area>
</div>
<div class="col-xs-10 col-sm-11">
<graph-area></graph-area>
</div>
</div><!--/.row-->
<div class="row">
<div class="col-xs-10 col-sm-11 offset-sm-1">
<ereignisbar-area></ereignisbar-area>
</div>
</div><!--/.row-->
</div><!--/.container-->
</div><!--/.page-container-->
Run Code Online (Sandbox Code Playgroud)
Ste*_*aul 228
我将模块A导入模块B时遇到此错误,然后尝试使用模块B中模块A的组件.
这是在我的exports
数组中声明该组件的问题.
@NgModule({
declarations: [
MyComponent
],
exports: [
MyComponent
]
})
export class ModuleA {}
Run Code Online (Sandbox Code Playgroud)
@NgModule({
imports: [
ModuleA
]
})
export class ModuleB {}
Run Code Online (Sandbox Code Playgroud)
fro*_*.io 31
我在Sanket的回答和评论的帮助下修复了它.
什么,你会不知道,并在错误消息并不明显的是:我进口PlannerComponent为@ NgModule.declaration在我的应用程序模块(= RootModule).
通过将PlannerModule导入为@NgModule.imports来修复错误.
之前:
@NgModule({
declarations: [
AppComponent,
PlannerComponent,
ProfilAreaComponent,
HeaderAreaComponent,
NavbarAreaComponent,
GraphAreaComponent,
EreignisbarAreaComponent
],
imports: [
BrowserModule,
RouterModule.forRoot(routeConfig),
PlannerModule
],
bootstrap: [AppComponent]
})
export class AppModule {
Run Code Online (Sandbox Code Playgroud)
后:
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
RouterModule.forRoot(routeConfig),
PlannerModule
],
bootstrap: [AppComponent]
})
export class AppModule {
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助 :)
小智 20
如果您已经使用了Webclipse自动生成的组件定义,您可能会发现选择器名称前面有"app-".显然,这是一个新的约定,用于声明主应用程序组件的子组件.如果您使用'new' - 'component'在Angular IDE中创建选择器,请检查您的选择器在组件中的定义方式.所以不要放
<header-area></header-area>
Run Code Online (Sandbox Code Playgroud)
你可能需要
<app-header-area></app-header-area>
Run Code Online (Sandbox Code Playgroud)
在您的计划程序组件中,您必须缺少像这样的导入HeaderAreaComponent-
import { HeaderAreaComponent } from '../header-area.component';
//change path according your project
Run Code Online (Sandbox Code Playgroud)
此外,请确保 - 必须通过NgModule声明所有组件和管道.
看看这是否有帮助.
我对<flash-messages></flash-messages>
角度5 遇到相同的问题。
您只需要在app.module.ts文件中添加以下行
import { ---, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { FlashMessageModule } from "angular-flash-message";
@NgModule({
---------------
imports: [
FlashMessageModule,
------------------
],
-----------------
schemas: [ CUSTOM_ELEMENTS_SCHEMA ]
------------
})
Run Code Online (Sandbox Code Playgroud)
NB:我正在使用此消息发送Flash消息
小智 5
当组件不在<router-outlet>
主应用程序页面中时,单元测试中出现错误。所以应该在测试文件中定义组件,如下所示。
<app-header></app-header>
<router-outlet></router-outlet>
Run Code Online (Sandbox Code Playgroud)
然后需要在spec.ts文件中添加如下。
import { HeaderComponent } from './header/header.component';
describe('AppComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
RouterTestingModule
],
declarations: [
App`enter code here`Component,
HeaderComponent <------------------------
],
}).compileComponents();
}));
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
141823 次 |
最近记录: |