繁体   English   中英

Angular2服务中的意外值。请添加注释

[英]Angular2 Unexpected value in Service. Please add annotation

在我的Angular2应用程序中收到以下错误错误:(SystemJS)模块'AppModule'声明的意外值'ReleasesService'。 请添加@ Pipe / @ Directive / @ Component注释。

我的AppModule

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { routing } from './app.routes';
import { HttpModule } from '@angular/http';
import { SearchFilter } from '../app/search-filter.pipe';
import { ReleasesService } from '../app/releases/releases.service';
import { AppComponent }  from './app.component';
import { HomeComponent } from '../app/home/home.component';
import { ReleasesComponent } from '../app/releases/releases.component';
import { DistroComponent } from '../app/distro/distro.component';
import { ContactComponent } from '../app/contact/contact.component';

@NgModule({
  imports:      [ BrowserModule, HttpModule, routing ],
  declarations: [ AppComponent, 
                  SearchFilter,
                  HomeComponent, 
                  ReleasesComponent, 
                  ReleasesService,
                  DistroComponent, 
                  ContactComponent  ],
  bootstrap:    [ AppComponent ]
})
export class AppModule { }

我的发布服务

import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { IRelease } from './release';
import 'rxjs/add/operator/map';

@Injectable()
export class ReleasesService {
  getReleases() {
    return IRelease;
  }
}

怎么解决? 我重新安装了Quickstarter (我的App的基础),并在尝试创建服务时遇到了同样的错误。

declarations仅适用于可declarations类: 组件指令和管道

您可以将ReleasesService添加到providers数组

@NgModule({
  imports:      [ BrowserModule ],
  declarations: [ AppComponent ],
  providers:    [ ReleasesService ],
  bootstrap:    [ AppComponent ]
})
export class AppModule { }

也可以看看

我有一个类似的问题,当一个项目有angular2作为依赖项和项目依赖项(与失败的组件)时发生。 似乎angular2元数据附加到直接的angular2依赖项,因此项目依赖项中的组件未在项目的angular2中声明。

解决方法是从依赖项中删除angular2(在那里将其声明为devDependency)并仅使用一个angular2实例。

确保装饰者有caracter @。

如果您没有在装饰器功能之前键入@,则会出现此错误消息

@Component({ selector: '...', }) -> Correct

Component({ selector: '...', }) -> ERROR MESAGE: 'add a @Pipe/@Directive/@component'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM