アングルアプリケーション(ng4)のコンポーネントにデータを返すサービスを書くのに忙しいです。データはスマートコントラクトから取り出されます。サービスからコンポーネントへのデータの返信
私は、次のエラーを取得しているようだ:
HomeComponent_Host.html:1 ERROR TypeError: this.smartContractService.getDrawId(...).subscribe is not a function
マイ部品コード:
this.smartContractService.getDrawId().subscribe(data => {
console.log('Result:: ', data);
});
そして、私のサービスメソッド:
getDrawId(): Observable<any> {
let gameObject;
return this.Game
.deployed()
.then(instance => {
gameObject = instance;
return gameObject.getDrawId.call();
})
.then(value => {
return value; //console.log(value) returns the data.
})
.catch(error => {
console.error('Error getting draw id; see log.');
console.log(error);
});
}
私が取得する方法を確認していませんサービスから呼び出し元のコンポーネントに戻ってくるデータ...
約束と観測のミックスアップがあるようです。 getDrawIdのコードの大半は、 'this.Game.deployed()'が '.then'sと' .catch'esを使って)約束を返しているように書かれていますが、戻り値の型が 'Observable 'それを観察可能なものとして使用しようとする。 –
ええ、約束と観測は私のアキレス腱です。私のことを混乱させてください。 – HappyCoder
@HappyCoder、ObservablesはPromisesとよく似ていますが、Promisesは1回限りのものです(つまり、HTTPリクエストを行い、応答を返します)、Observablesは連続しています...最も基本的なのは、パブリッシュ/サブスクライブすると、何かが値を引き出して先入れ先出しキューにプッシュされます。また、1人以上の加入者がいる場合、それらの値を加入者にプッシュし始める。繰り返しますが、これは最も基本的な例です。 – gonzofish