Angular2 Injected custom service is undefined

Nat4j

I am trying to inject one custom service(MessageService) into another custom service(ItemService). It throwing an error MessageService is undefied in ItemService.
But both the Services (MessageService and ItemService) are working fine with components.

mani.ts

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app.module';
const platform = platformBrowserDynamic();
platform.bootstrapModule(AppModule);

app.module.ts

import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AppComponent }   from './app.component';
import { routing, routedComponents } from './app.routing';
import { ItemService } from './services/item.service';
import { MessageService } from './services/message.service';
import './rxjs-extensions';


@NgModule({
  imports:      
  [ BrowserModule, 
    routing, 
    FormsModule, 
    ReactiveFormsModule,
    HttpModule,

  ],
  declarations: [ AppComponent, routedComponents],
  providers: [
    MessageService,ItemService 
  ],
  bootstrap:    [ AppComponent ]
})
export class AppModule { }

message.service.ts

import { Injectable } from '@angular/core';
import { Subject }    from 'rxjs/Subject';
import { Message } from '../models/message';

@Injectable()
export class MessageService {
    constructor() { }

    showError(msg: string) {
        console.log('MessageService Alert::'+msg);
    }

}

item.service.ts

import { Injectable } from '@angular/core';
import { Http, Response, Headers, RequestOptions } from '@angular/http';
import { Item } from '../models/item';
import { MessageService } from '../services/message.service'
import { Observable } from 'rxjs';

@Injectable()
export class ItemService {
private restUrl = 'http://localhost:3000/';  // URL to web api

  constructor(
    private http: Http,
    private msgService: MessageService) { }

  getAllItems(): Observable<Item[]> {
    return this.http
      .get(this.restUrl+'items')
      .map( (res: Response) => res.json() as Item[])
      .catch(this.handleError);
  }

  private handleError(error: any): Promise<any> {
    console.error('An error occurred', error);
    let errorMsg = error.message || error;
    this.msgService.showError("errorMsg"); // msgService is undefined here.
    return Promise.reject(errorMsg);
  }

}

here the msgService is undefined in ItemService. can anyone help me to resolve this ?

Günter Zöchbauer

The problem is this. not ItemService

.catch(this.handleError);

should be

.catch(this.handleError.bind(this));

for this. to keep pointing to the current class instance inside handleError()

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From

Angular 7 : Injected service is undefined

From

Angular 2: No provider for (injected) service

From Dev

Initialize a non injected angular service

From Dev

Angular 2 service not being injected into component

From Dev

Angular 2.0 - Injected Http service is undefined

From Dev

Inject a service in a custom validator in Angular2

From Dev

Angular2 - test that a injected private service method has been called

From Dev

Angular2 injected Router is undefined

From Dev

angular2/jasmine injected mock service not calling spies

From Dev

Angular 2 Injected Service is undefined

From Dev

Angular 2 injected service into another service is undefined

From Dev

Unit testing with private service injected using jasmine angular2

From Dev

NestJS - Injected service is undefined in the constructor

From Dev

In Angular2, how do I use a value from an injected service to set a static variable?

From Dev

Injected service undefined

From Dev

Angular with Typescript and undefined injected service in directive

From Dev

Angular2 injected service going undefined

From Dev

Service undefined when injected into controller

From Dev

Angular2 Service Unit Test Fails with TypeError: undefined is not an object

From Dev

Injected Logger is undefined in Custom Http in angular2

From Dev

Custom service in extended Http not getting injected

From Dev

angular2: strange null error from an injected service

From Dev

Angular 2 Undefined on Injected Service

From Dev

Angular2 service not being injected as singleton

From Dev

Angular 2: parent class dependency injected is undefined

From Dev

Angular Unit test for an injected service

From Dev

Injected nestjs service in to CQRS is undefined

From Dev

Method undefined from injected service in NestJS

From Dev

Undefined Injected Service on ng-template outlet context

Related Related

  1. 1

    Angular 7 : Injected service is undefined

  2. 2

    Angular 2: No provider for (injected) service

  3. 3

    Initialize a non injected angular service

  4. 4

    Angular 2 service not being injected into component

  5. 5

    Angular 2.0 - Injected Http service is undefined

  6. 6

    Inject a service in a custom validator in Angular2

  7. 7

    Angular2 - test that a injected private service method has been called

  8. 8

    Angular2 injected Router is undefined

  9. 9

    angular2/jasmine injected mock service not calling spies

  10. 10

    Angular 2 Injected Service is undefined

  11. 11

    Angular 2 injected service into another service is undefined

  12. 12

    Unit testing with private service injected using jasmine angular2

  13. 13

    NestJS - Injected service is undefined in the constructor

  14. 14

    In Angular2, how do I use a value from an injected service to set a static variable?

  15. 15

    Injected service undefined

  16. 16

    Angular with Typescript and undefined injected service in directive

  17. 17

    Angular2 injected service going undefined

  18. 18

    Service undefined when injected into controller

  19. 19

    Angular2 Service Unit Test Fails with TypeError: undefined is not an object

  20. 20

    Injected Logger is undefined in Custom Http in angular2

  21. 21

    Custom service in extended Http not getting injected

  22. 22

    angular2: strange null error from an injected service

  23. 23

    Angular 2 Undefined on Injected Service

  24. 24

    Angular2 service not being injected as singleton

  25. 25

    Angular 2: parent class dependency injected is undefined

  26. 26

    Angular Unit test for an injected service

  27. 27

    Injected nestjs service in to CQRS is undefined

  28. 28

    Method undefined from injected service in NestJS

  29. 29

    Undefined Injected Service on ng-template outlet context

HotTag

Archive