2017-07-20 15 views
0
import {OnInit} from '@angular/core'; 

export class GitGrabService implements OnInit { 
    url; 
    ngOnInit() { 
} 
getUsername(name: string) { 
    this.url = 'http://api.github.com/users/' + name + '/repos'; 
    this.sendUrl(); 
} 

sendUrl(): string { 
    return this.url; 
    } 
} 

ここで私は別のサービスのsendUrl()にアクセスしようとしていますが、印刷しようとすると定義されていません。次の関数で変数の同じスコープにアクセスする方法は?

import {GitGrabService} from './gitGrab.service'; 
import {Injectable} from '@angular/core'; 
import {Headers, Http} from '@angular/http'; 
@Injectable() 
export class GitRepoService { 
// public url; 
    constructor(private gitgrabService: GitGrabService, 
       private http: Http) {} 

    fetchRepo() { 
    console.log(this.gitgrabService.sendUrl());/// This shows up as undefined. 
    return this.http.get(this.gitgrabService.sendUrl()); 
    } 
} 

ありがとうございます。

答えて

0

GitGrabService@Injectable()デコレータを使用する必要があります。そうしないと、他のサービスでそのインスタンスを作成できません。

+0

真。しかし、GitRepoServiceに追加したので、コンソールに戻り値を出力できるはずです。 –

+0

あなたの 'this.url'値は最初は定義されていませんので、' this.gitgrabService.sendUrl() 'は' this.getUsername() 'メソッドを最初に実行しないと未定義の値を返します。 'sendUrl'の実行です。 –

関連する問題