2017-07-09 29 views
0

ユーザーが画像をアップロードできるサービスを持つAngular 4アプリケーションで作業しています。このアップロードが成功するたびにコンポーネントに通知することができます。それはどうですか?これは私のservice.tsファイル内のサブスクリプションオブジェクトを返す私の機能である例を与えることをSubscriptionタスクがAngularで実行された後に関数呼び出しをトリガする方法

は、:私のコンポーネントで

​​

、この関数が呼び出されます。

let my_subscription = this.cardService.uploadImage(newImage) 
    \\ I want to call this.randomfunction() whenever my uploading is finished. 

これがどのように行われますか?

my_subscription.subscribe() 

しかし、これは明らかに許可されていません。

答えて

3

メソッドの呼び出しからSubscriptionを受信して​​いるため、subscribeを使用することはできません。コンポーネント内でsubscribeメソッドを呼び出すと、Observableが返されることをお勧めします。代わりにdo演算子を使用して、希望のアクションを呼び出してObservableを返すことができます。コードは次のようなになります。

uploadImage(new_image: File) { 
    this.uploading = true; 
    let url = '/products/photo/'; 
    let newImagePayload = new FormData(); 

    newImagePayload.append('photo', new_image, new_image.name); 

    return this.queryService.postQueryFormData(url, newImagePayload).do(result => { 
     this.uploading = false; 
     this.image_location = result['photo']; 
    }); 
} 

は、その後、あなたのコンポーネント内にあなたはsubscribeメソッドを呼び出すことができます。

関連する問題