私は私のメインコンポーネントにイベントを放出していますでのイベントにサブスクライブ:角度4発光および共有サービス
main.component.ts
ここthis.sharedService.cartData.emit(this.data);
である私のsharedService.ts
私の他の(サブ)コンポーネントでimport { Component, Injectable, EventEmitter } from '@angular/core';
export class SharedService {
cartData = new EventEmitter<any>();
}
は、私は、この値にアクセスしたいのですが、どういうわけか、サブスクリプションが動作しません:
ダッシュボード.ts
private myData: any;
constructor(private sharedService: SharedService) {
this.sharedService.cartData.subscribe(
(data: any) => myData = data,
error => this.errorGettingData = <any>error,
() => this.aggregateData(this.myData));
}
私に何か不足していますか?データを注入可能なものとして渡すとうまく動作します。 イベントを(主要コンポーネント内で)放出することは、いくつかのREST呼び出しの後に起こります。
*************アップデート*************** 問題は、サブコンポーネントが最初の放出後に作成されることですイベントの私はこの場合、データを直接サブコンプリートに注入するほうがよいと思います。
どこsharedServiceを提供していますか?サービスのインスタンスが同じではない可能性があります。異なるモジュールでサービスを提供すると起こります。 –
親app.module.tsプロバイダで宣言しました。[SharedService ...]、 – Stef
、どちらのコンポーネントも同時にロードされていますか?異なるルートでは? –