2017-11-13 5 views
0

私は角4で反応性形を作り、以下のような形でvalueChangesを探しています:valueChangesからAngular 4反応性フォームの登録を解除するにはどうすればよいですか?

this.searchForm.valueChanges.subscribe((value) => { 
    console.log(value); 
}); 

上記のコードは完璧に動作します。しかしのvalueChangesからの退会方法はthis.searchForm.valueChanges.unsubscribe()ではないようです。これを解決するのを手伝ってください。

答えて

3

subscribeあなたはunsubscribe

this.subscription = this.searchForm.valueChanges.subscribe((value) => { 
    console.log(value); 
}); 

... 

ngOnDestroy() { 
    this.subscription.unsubscribe(); 
} 
1

@Surenが正しい答えを持って、私はちょうど私が多くのサブスクリプションを持っていたときに私が使用するいくつかのコードを追加したいことができ、そこからタイプSubscriptionのオブジェクトを返します。

... 
this.subscriptions.push(this.searchForm.valueChanges.subscribe((value) => { 
    console.log(value); 
})); 
... 

private subscriptions: Subscription[] = []; 

ngOnDestroy(): void { 
    this.subscriptions.forEach((sub) => { 
     sub.unsubscribe(); 
    }) 
} 
0

私は、あなたがあなたのコードは

this.searchForm.valueChanges 
.takeUntil(this.ngUnsubscribe) 
.subscribe((value) => { 
    console.log(value); 
}); 
のようになります。SubscriptionDisposer してコンポーネントクラスを拡張する必要があり

import { OnDestroy } from '@angular/core'; 
import { Subject } from 'rxjs/Subject'; 

export class SubscriptionDisposer implements OnDestroy { 
    protected ngUnsubscribe: Subject<void> = new Subject<void>(); 
    constructor() { 
    } 
    ngOnDestroy() { 
    this.ngUnsubscribe.next(); 
    this.ngUnsubscribe.complete(); 
    } 
} 

を購読ディスポーザークラスを作成しました

関連する問題