world versiones starter hello guide app typescript angular

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?