2017-08-30 5 views
0

私は2つの子コンポーネントを持っています。私はこの方法OnInit以外のサブスクリプション

onClick() { 
    this.listImage = this.imageService.getImages(); 
    let headers = new HeaderObject(); 
    headers.file = this.listImage[0].data; 
    this.documentService.getOcrDocument(headers).subscribe(res => { 
    headers = res; 
    this.ocrService.headerObject.next(headers); 
    }) 
第二成分で

headerSubcribed: HeaderObject; 
    private headerSubscription: Subscription; 

    ngOnInit() { 
    this.headerSubscription = 
    this.ocrService.headerObject.subscribe((ocrHeader: HeaderObject) => { 
    this.headerSubcribed = ocrHeader; 
    } 

しかしngOnInit()は一度だけ後に、私がしたいビューをレンダリングする必要があり、私は最初のコンポーネントで

headerObject = new Subject<HeaderObject>(); 

を持っているサービスで

このコードをngOnitの外側に移動して実行してください。しかし、私はどうしたらいいのでしょうか?いくつかのヒントはどのようにそのコードを実行する?私は値を発行するnext()メソッドでブレークポイントを設定しますが、後でメソッドsubscribeは実行されません。私は何が間違っていますか?

+0

コンストラクタ内に配置 – Thabung

+0

@Thabung次の質問があれば、サブクライブメソッドはコンカレントを実行します。コードのこのスニペットを実行するには? –

答えて

1

あなたは、観察/何かと通知を観察

を購読する2つの部分があります。 サービスでは、Subjectタイプの変数があり、next()を呼び出して値をプッシュしています。このメソッドが呼び出されると、すべてのオブザーバーにそれまで購読している手段を通知します。

オブザーバーを聴いて、操作してください。 オブザーバーを聞くと、値を変更すると更新が得られます。 onNginitやコンストラクタにサブスクリプションを入れても問題はありません。コードがあれば、変更があったときに通知します。

状況に応じてBevavourSubjectを参照することもできます。

+0

私はget restメソッドからnext()メソッドの値にプッシュしますが、サブスクリプションはなぜこれが起こっているのか通知しません。 –

関連する問題