2016-02-26 2 views
0

У меня есть эта страница tag-navigation-p1.jsIonic2 не в состоянии назвать угловых Service

import {Modal, NavController, Page, Events, Platform, NavController, NavParams, ViewController} from 'ionic-framework/ionic'; 
import {TagNavigationPage2} from '/home/manish/Softwares/cordova/mobapp/app/pages/tag-navigations/tag-navigation-p2'; 
import {TagNavigationService} from '/home/manish/Softwares/cordova/mobapp/app/pages/tag-navigations/tag.navigation.service'; 

@Page({ 
    templateUrl: 'build/pages/tag-navigations/tag-navigation-p1.html', 

}) 
export class TagNavigationPage1 { 
    constructor(
     platform: Platform, 
     params: NavParams, 
     viewCtrl: ViewController, 
     public nav: NavController 
) { 


    } 

    dismiss() { 
    this.viewCtrl.dismiss(); 
    } 

    nextPage() { 
    debugger 
    TagNavigationService.getHeroes() 
         .subscribe(
          error => this.errorMessage = <any>error);  
    this.nav.push(TagNavigationPage2); 
    } 
} 

здесь tag.navigation.service.js

import {Injectable}  from 'angular2/core'; 
import {Http, Response} from 'angular2/http'; 
import {Headers, RequestOptions} from 'angular2/http'; 
import {Observable}  from 'rxjs/Observable'; 

@Injectable() 
export class TagNavigationService { 
    constructor (private http: Http) {} 

    private _heroesUrl = 'app/heroes'; // URL to web api 

    getHeroes() { 
    console.log("get heros called"); 
    return this.http.get(this._heroesUrl) 
        .do(data => console.log(data)) 
        .catch(this.handleError); 
    } 

    private handleError (error: Response) { 
    console.log("get heros error called"); 
    console.error(error); 
    return Observable.throw(error.json().error || 'Server error'); 
    } 
} 

, когда я называю getHeros() от nextPage() я получаю эту ошибку:

Uncaught EXCEPTION: Error during evaluation of "click" 
ORIGINAL EXCEPTION: TypeError: tag_navigation_service_1.TagNavigationService.getHeroes is not a function 
ORIGINAL STACKTRACE: 
TypeError: tag_navigation_service_1.TagNavigationService.getHeroes is not a function 
    at TagNavigationPage1.nextPage (file:///android_asset/www/build/js/app.bundle.js:62368:56) 
    at AbstractChangeDetector.ChangeDetector_TagNavigationPage1_0.handleEventInternal (viewFactory_TagNavigationPage1:47:33) 
    at AbstractChangeDetector.handleEvent (file:///android_asset/www/build/js/app.bundle.js:14048:30) 
    at AppView.triggerEventHandlers (file:///android_asset/www/build/js/app.bundle.js:18355:37) 
    at eval (viewFactory_TagNavigationPage1:287:124) 
    at file:///android_asset/www/build/js/app.bundle.js:33426:37 
    at file:///android_asset/www/build/js/app.bundle.js:32803:87 
    at Zone.run (file:///android_asset/www/build/js/app.bundle.js:2258:25) 
    at Zone.run (file:///android_asset/www/build/js/app.bundle.js:17599:43) 
    at NgZone.run (file:///android_asset/www/build/js/app.bundle.js:17547:41) 
ERROR CONTEXT: 
[object Object] 

i следовал за этим http://plnkr.co/edit/y28jDxbuxCyLLH0rFjj2?p=options

+0

Вы вызываете метод, как если бы это был статический метод. Но это метод экземпляра. Вам необходимо ввести услугу в компонент. –

+0

попробуйте ввести «TagNavigationService» в конструкторе –

+0

вы можете показать, как? – manish

ответ

0

Как сказал @Pardeep Jain, вам нужно ввести свою службу в конструктор. Попробуйте выполнить следующие шаги, чтобы избежать неопределенной ошибки.

export class TagNavigationPage1 { 

    TagNavigationService; 

    constructor(
     platform: Platform, 
     params: NavParams, 
     viewCtrl: ViewController, 
     public nav: NavController, 
     tagNavigation: TagNavigationService 
) { 
    this.TagNavigationService = tagNavigation; 

    } 

    dismiss() { 
    this.viewCtrl.dismiss(); 
    } 

    nextPage() { 
    debugger; 
    this.TagNavigationService.getHeroes() 
         .subscribe(
          error => this.errorMessage = <any>error);  
    this.nav.push(TagNavigationPage2); 
    } 
}