2017-10-03 6 views
1

私はAngular 2/4で(gmail doと同様に)アプリを表示するメッセージを実装しようとしていました。 サイドバーに未読メッセージの数(たとえば、inbox.component.ts)を表示する必要があります(例:sidebar.component.ts)。角2/4未読/見えないメッセージの数を表示

私は1 this.unSeenMsg = this.unSeenMsg-1によって数を減らす未読メッセージの1を打つには、未読のメッセージ( ngOnInit()に初期化)の値を保持する変数( unSeenMsg発言を)持って受信トレイコンポーネントで

サイドバーにunSeenMsgの値を通知する方法はありますか。

流れの話、私はレイアウトコンポーネント(サイドバーはこの1つの子供である) 受信トレイを持っているいくつかのいずれかをすることができます私に

答えて

1

を助けることを願って

後の時間に初期化され、別のコンポーネントでありますあなたが最初にデータを取得し、あなたがなどのコンポーネントでそれを設定することができたら、型対象

export class notifyServic { 
    private unseenCount = 0; 
    unSeenMsgChange: Subject<number> = new Subject<number>(); 
    UpdateUnseen(count: number) { 
     this.unseenCount = count; 
     this.unSeenMsgChange.next(this.unseenCount); 
    } 
} 

の変数でサービスを利用

this.conversation.getMessages().subscribe(resultmessages => { 
    this.notifyServic.UpdateUnseen(this.resultmessages.length); 
}, error => this.errorMessage = error); 

れ、読み取らhttps://angular.io/guide/component-interaction

、等の他の成分に
notifyServic.unseenCount; 
+1

こんにちは、私の場合は部分的に動作します。私はサイドバーのカウントを更新する必要があります。最初に読み込まれ、変数unseenCountの更新は、ユーザーがそのコンポーネントにアクセスしたときにのみ発生します(私の場合は受信トレイに当たっています)。サイドバーに更新値を通知する必要があります。サイドバーが常にunSeenCountを0として表示します(より正確には、サイドバーが初期化後に再びロードされないようにします)。 –

+0

同じライフタイムフックを使用できます。 – Sajeetharan

+0

両方のコンポーネントで呼び出しを2回行うことができます – Sajeetharan

1

を使用します。

ここに少しの例があります。親コンポーネント:親のHTMLで

this.updateChild = this.unSeenMsg; 

:子コンポーネントで

<sidebar [childCounter]=updateChild ></sidebar> 

@Input() childCounter: any; 

、サイドバーのHTMLでchildCounterを示しました。

+0

私の場合、これらのコンポーネントは親子関係を全く持たない –

関連する問題