我在我的主發光成分的事件訂閱的事件:角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>();
}
在我的其他(子)組件,我想訪問這個值,但不知何故,認購不工作:
dashboard.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));
}
我錯過了什麼嗎?當我將數據作爲Injectable傳遞時,它工作正常。 發送事件(在主要組件中)發生在一些REST調用之後。
**************更新***************** 所以問題是子組件是在第一個發射之後創建的的事件。我想在這種情況下,最好直接將數據注入子組件。
你在哪裏提供sharedService?服務實例可能不相同,如果您在不同模塊中提供服務,則會發生這種情況。 –
我在父app.module.ts提供程序中聲明瞭它:[SharedService ...], – Stef
以及這兩個組件如何同時加載?在不同的路線? –