32
loading...
This website collects cookies to deliver better user experience
export class DataService {
data: EventEmitter<Data> = new EventEmitter<Data>();
updateData(data: Data): void {
this.data.emit(data);
}
}
export class MyComponent {
constructor(private readonly dataService: DataService) {}
ngOnInit() {
this.dataService.data.subscribe(() => {
// do whatever you want
});
}
}
updateData
to emit a value, the component will receive it.class EventEmitter extends Subject<any> {
constructor() {
super();
}
emit(value?: any) {
super.next(value);
}
subscribe(observerOrNext?: any, error?: any, complete?: any): Subscription {
const sink = super.subscribe({next: observerOrNext, error: error, complete: complete});
return sink;
}
}
Use in components with the @Output directive to emit custom events synchronously or asynchronously, and register handlers for those events by subscribing to an instance.
export class DataService {
data: EventEmitter<Data> = new EventEmitter<Data>();
updateData(data: Data): void {
this.data.emit(data);
}
}
export class DataService {
// change the type and the visibility
private dataSubject: Subject<Data> = new Subject<Data>();
// create a public observable out of the subject for external usage
data$: Observable<Data> = this.dataSubject.asObservable();
updateData(data: Data): void {
// update the API
this.dataSubject.next(data);
}
}