我陷入困境。我收到这样的错误。
compiler.es5.js:1694 Uncaught Error: Unexpected value 'LoginComponent' declared by the module 'AppModule'. Please add a @Pipe/@Directive/@Component annotation.
at syntaxError (compiler.es5.js:1694)
at compiler.es5.js:15595
at Array.forEach (<anonymous>)
at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver.getNgModuleMetadata (compiler.es5.js:15577)
at JitCompiler.webpackJsonp.../../../compiler/@angular/compiler.es5.js.JitCompiler._loadModules (compiler.es5.js:26965)
at JitCompiler.webpackJsonp.../../../compiler/@angular/compiler.es5.js.JitCompiler._compileModuleAndComponents (compiler.es5.js:26938)
at JitCompiler.webpackJsonp.../../../compiler/@angular/compiler.es5.js.JitCompiler.compileModuleAsync (compiler.es5.js:26867)
at PlatformRef_.webpackJsonp.../../../core/@angular/core.es5.js.PlatformRef_._bootstrapModuleWithZone (core.es5.js:4536)
at PlatformRef_.webpackJsonp.../../../core/@angular/core.es5.js.PlatformRef_.bootstrapModule (core.es5.js:4522)
at Object.../../../../../src/main.ts (main.ts:11)
我的登录组件看起来像这样
import { Component } from '@angular/Core';
@Component({
selector:'login-component',
templateUrl:'./login.component.html'
})
export class LoginComponent{}
app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { CommonModule } from '@angular/common'
import { HttpModule } from '@angular/http';
import { ReactiveFormsModule} from '@angular/forms';
import { RouterModule, Routes } from '@angular/router';
import { AppComponent } from './main/app.component';
import {LoginComponent} from './login/login.component';
const appRoutes: Routes = [
{path:'', redirectTo:'login', pathMatch:'full'},
{ path: 'home', component: AppComponent },
{ path: 'login', component: LoginComponent }
];
@NgModule({
imports: [
BrowserModule,
RouterModule.forRoot(appRoutes),
],
declarations: [
AppComponent,
LoginComponent
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
当我尝试将LoginComponent导入声明时出现此错误。我在这里错过了一些东西。
答案 0 :(得分:10)
不是上述具体示例的解决方案,但可能有很多原因导致您收到此错误消息。当我不小心将模块添加到模块声明列表而不是导入时,得到了它。
在app.module.ts中:
import { SharedModule } from './modules/shared/shared.module';
@NgModule({
declarations: [
// Should have been added here...
],
imports: [
SharedModule //wrong
],
答案 1 :(得分:6)
您在LoginComponent
的文件中导入了一个拼写错误
import { Component } from '@angular/Core';
它是小写c
,而不是大写
import { Component } from '@angular/core';
答案 2 :(得分:3)
当我使用另一个类而不是组件装饰器中的组件时,我遇到了相同的错误。
组件类必须紧随组件装饰器之后
@Component({
selector: 'app-smsgtrecon',
templateUrl: './smsgtrecon.component.html',
styleUrls: ['./smsgtrecon.component.css'],
providers: [ChecklistDatabase]
})
// THIS CAUSE ISSUE MOVE THIS UP TO COMPONENT DECORATOR
/**
* Node for to-do item
*/
export class TodoItemNode {
children: TodoItemNode[];
item: string;
}
export class SmsgtreconComponent implements OnInit {
将TodoItemNode移到组件装饰器的顶部后,它起作用了
解决方案
// THIS CAUSE ISSUE MOVE THIS UP TO COMPONENT DECORATOR
/**
* Node for to-do item
*/
export class TodoItemNode {
children: TodoItemNode[];
item: string;
}
@Component({
selector: 'app-smsgtrecon',
templateUrl: './smsgtrecon.component.html',
styleUrls: ['./smsgtrecon.component.css'],
providers: [ChecklistDatabase]
})
export class SmsgtreconComponent implements OnInit {
答案 3 :(得分:2)
就我而言,我不小心在声明中添加了该程序包,但应该在导入中。
答案 4 :(得分:1)
如果执行任何错误的导入,则会发生上述错误。 例如,有时可以在TestBed.configureTestingModule中添加服务文件。 并且在导入Material组件时,例如从
导入import {MatDialogModule} from '@angular/material/dialog'
不是来自
import {MatDialogModule} from '@angular/material'
答案 5 :(得分:1)
我声明了一个没有styleUrls属性的组件,如下所示:
@Component({
selector: 'app-server',
templateUrl: './server.component.html'
})
而不是:
@Component({
selector: 'app-server',
templateUrl: './server.component.html',
styleUrls: ['./server.component.css']
})
添加styleUrls属性可以解决此问题。
答案 6 :(得分:1)
在我的情况下,我错误地添加了此内容:
@Component({
selector: 'app-some-item',
templateUrl: './some-item.component.html',
styleUrls: ['./some-item.component.scss'],
providers: [ConfirmationService]
})
declare var configuration: any;
正确的格式是:
declare var configuration: any;
@Component({
selector: 'app-some-item',
templateUrl: './some-item.component.html',
styleUrls: ['./some-item.component.scss'],
providers: [ConfirmationService]
})
答案 7 :(得分:0)
如果要在该模块中导出另一个类,请确保该类不在@Component
和ClassComponent
之间。例如:
@Component({ ... })
export class ExampleClass{}
export class ComponentClass{} --> this will give this error.
FIX:
export class ExampleClass{}
@Component ({ ... })
export class ComponentClass{}
答案 8 :(得分:0)
在共享模块中错误地将共享服务添加到“声明”而不是将共享服务添加到“提供者”时,会出现此错误。
答案 9 :(得分:0)
下面是另一种解决方案,这是我的错,发生时,我将HomeService
放在了app.module.ts
的声明部分中,而我应该将HomeService
放在了< strong>提供者部分,如您在HomeService
中declaration:[]
下方看到的位置不正确,而HomeService
在Providers :[]
部分中的位置应该正确是。
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { HttpModule } from '@angular/http';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { HomeComponent } from './components/home/home.component';
import { HomeService } from './components/home/home.service';
@NgModule({
declarations: [
AppComponent,
HomeComponent,
HomeService // You will get error here
],
imports: [
BrowserModule,
BrowserAnimationsModule,
AppRoutingModule
],
providers: [
HomeService // Right place to set HomeService
],
bootstrap: [AppComponent]
})
export class AppModule { }
希望这对您有所帮助。
答案 10 :(得分:0)
我试图在共享模块(导入和导出)中使用 BrowserModule 。那是不允许的,所以我不得不使用 CommonModule 来代替,并且有效。
答案 11 :(得分:0)
当我错误地将服务添加到 app.module.ts 中的声明部分时出现此错误