2017-03-05 12 views
0

私はangular2とtypescriptでプロジェクトを試みていますが、私はいくつか説明できない問題があります。何らかの理由で、クラスプロパティにデータを割り当てることができません。angular2 typescriptはthis.objectプロパティに割り当てられません

私はこのように定義されたクラスのプロパティのペアを持っている:

getBookByCode() { 

    this.http.get('/api/book/loadbycode?code=' + this.bookCode) 
     .subscribe(result => { 

      var object = result.json(); 

      console.log(object); 

      this.loadResultMessages = object.loadResultMessages; 
      this.book = object.book; 

    }); 
} 

私は取得していますことを確認しました:

public loadResultMessages: string[]; 
public book: Book; 

私はこのようなサービスを呼んでいる方法を持っていますデータをオブジェクトに戻しますが、2つのプロパティにデータを割り当てようとした後でも、定義されていません。どのようにすることができますか?

EDIT:さて、私はJavaScriptを使用してVisual Studio 2017を使い、ブレークポイントを設定しています。私は変数の上にマウスオーバーしていて、彼らは未定義であると私に言っていました。しかし、実際にそれらをコンソールにログアウトすると、それらは読み込まれます。他の変数私はマウスオーバーすることができ、結果を表示します。私はこれが何らかの種類のタイミング問題かVSのバグかどうかは分かりません。

私はまた、いくつかの主要なキャッシュ問題を抱えていると思います。ちょうど余分なconsole.log()コールをそこに置くだけで、私のコードが動作し始めました。

+1

として、あなたのコンストラクタで、それに加入する必要がありますあなたのコンポーネントで

getBookByCode(bookCode) : Observable<any[]> { return this.http.get('/api/book/loadbycode?code=' + bookCode) .map((response: Response) => <any[]>response.json()) .do(data => console.log("data we got is " + JSON.stringify(data))) .catch(this.handleError); }); } 

?それが '[Object object]'なら、 'console.log(JSON.stringify(object))'を試して質問に追加してください。 –

+1

.htmlでエラーが発生した場合は、本のインスタンス化を試みてください:Book = new Book(...) – Habeeb

+0

もっと情報、エラー、console.logsなどが必要だと思います... – Amit

答えて

0

ほとんどの場合、オブジェクトまたはオブジェクトの配列のObservableが返されます。ここで `;あなたは`にconsole.log(オブジェクト)の結果を追加することができます

constructor(private serviceObject:ServiceName){ 
    this.serviceObject.getBookByCode(this.bookCode) 
        .subscribe(results => this.results = results, 
        error =>console.log(error); 
    } 
} 
+0

この回答は完全に助けられましたか? – Aravind

+0

もう少し手伝ってください。私は実際にいくつかのコンポーネント間で共有するサービスプロパティに書籍の配列をキャッシュしたいのですが、構文を調整する方法を正確に把握することはできません。私はそれがまだ入力されていない場合にのみ、配列を生成するために呼び出したいと思います。それは理にかなっていますか? –

+0

部分的に分かりました。しかし、より多くの情報が必要ですfb @ aravind2109 – Aravind

関連する問題