ich einen Datumsbereich, die ich möchte die ausgewählten Daten zwischen den verschiedenen Komponenten, ohne die Notwendigkeit teilen Code über alle Komponenten zu duplizierenAngular2 Übergabe von Daten an verschiedene Komponenten Dienste
So habe ich architectured meine Anwendung auf diese Weise
<app-date-range /> //date range component
<router-outlet></router-outlet>
ich geschaffen habe auch einen Event-Service, die ich in meinem App-Modul-Anbieter hinzugefügt habe
@Injectable()
export class ReportsEventService {
public maininputrange = new Subject();
constructor() { }
maininputrangeemit(data:any){
this.maininputrange.next({type:"mainputrange", data:data});
}
}
in meinem Datumsbereich Komponente i emittieren wie dieses
constructor(
private _reportEventService:ReportsEventService
){ }
dateRangeChanged(data){
...other implementations
this._reportEventService.maininputrangeemit(this.mainInput);
}
Nun würde Ich mag, wenn ich eine andere Komponente besuchen Sie die Daten auf init emittiert zuzugreifen.
mainInput:any;
constructor(
private _reportsEvenService:ReportsEventService
) {
_reportsEvenService.maininputrange.subscribe(
(data)=>{
console.log("receiving values"); //called many times
this.mainInput = data;
}
)
}
ngOnInit() {
console.log("maininput value is");
console.log(this.mainInput); //always undefined
}
Wohin gehe ich falsch und ist meine Implementierung möglich?
Verwendung 'BehaviourSubject' statt' Subject'. Ich würde es vorziehen, redux einzurichten (ngrx-store) – Aravind
Danke Verhalten Betreff funktioniert. –
fröhliche Codierung. :) :) – Aravind