En mi aplicación Angular2 recibo el siguiente error Error: (SystemJS) Valor inesperado 'ReleasesService' declarado por el módulo 'AppModule'. Agregue una anotación @Pipe/@Directive/@Component.
Mi módulo de aplicación :
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 { }
Mi servicio de lanzamientos :
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; } }
¿Como arreglarlo? Reinstalé Quickstarter (la base de mi aplicación) y tuve el mismo error al intentar crear el servicio.
Las declarations
son solo para clases declarables: componentes, directivas y tuberías .
Puede agregar ReleasesService
a la matriz de providers
@NgModule({ imports: [ BrowserModule ], declarations: [ AppComponent ], providers: [ ReleasesService ], bootstrap: [ AppComponent ] }) export class AppModule { }
Ver también
Tuve un problema similar, que ocurrió mientras un proyecto tenía angular2 como dependencia y también una dependencia del proyecto (con el componente defectuoso). Parece que los metadatos angular2 se adjuntan a la dependencia angular2 directa, por lo que el componente en la dependencia del proyecto no se declaró en el angular2 del proyecto.
La solución es eliminar angular2 de la dependencia (declarándolo como devDependency allí) y solo usar una instancia de angular2.
Asegúrese de que el decorador tenga el caracter @.
Si no escribe @ antes de la función de decorador, tendrá este mensaje de error
@Component({ selector: '...', }) -> Correct Component({ selector: '...', }) -> ERROR MESAGE: 'add a @Pipe/@Directive/@component'