typescript - versiones - Angular2 sin proveedor por error de servicio
install angular (1)
También debe definir ApiService
en el atributo de providers
.
@Component({
selector: ''my-app'',
providers: [MediaService, ApiService], // <-----
template: `
<div>
<h2>Hello {{name}}</h2>
</div>
`,
directives: []
})
export class App {
constructor(mediaService: MediaService) {
this.name = ''Angular2''
console.log(''start'');
mediaService.makeCall();
}
}
Es porque los inyectores se basan en los componentes. Si desea obtener más detalles sobre cómo inyectar un servicio en un servicio, puede echar un vistazo a esta pregunta:
Desde el servicio global de acceso a Angular2 sin incluirlo en cada constructor , agarré el código y lo modifiqué ligeramente en:
@Injectable()
export class ApiService {
constructor(public http: Http) {}
get(url: string) {
return http.get(url);
}
}
@Injectable()
export abstract class BaseService {
constructor(protected serv: ApiService) {}
}
@Injectable()
export class MediaService extends BaseService {
// Why do we need this?
constructor(s: ApiService) {
super(s)
}
makeCall() {
this.serv.get("http://www.example.com/get_data")
}
}
Sin embargo, cuando intento ejecutar este código, aparece un error en la consola:
NoProviderError {mensaje: "¡No hay proveedor para ApiService! (App -> MediaService -> ApiService)", pila: "Error: DI Exception"
Creé un Plunkr con el código en https://plnkr.co/edit/We2k9PDsYMVQWguMhhGl
¿Alguien sabe qué causa este error?