@Injectable({ providedIn: 'root' })
export class EventBusService {
private messageSubject = new Subject<string>();
messages$ = this.messageSubject.asObservable();
sendMessage(message: string) {
this.messageSubject.next(message);
}
}
@Component({ })
export class SenderComponent {
constructor(private eventBus: EventBusService) {}
send() {
this.eventBus.sendMessage('Hello from Sender!');
}
}
@Component({ })
export class ReceiverComponent implements OnInit {
message = '';
constructor(private eventBus: EventBusService) {}
ngOnInit() {
this.eventBus.messages$.subscribe(msg => {
this.message = msg;
});
}
}
@Injectable({ providedIn: 'root' })
export class AuthService {
private currentUserSubject = new BehaviorSubject<User | null>(null);
currentUser$ = this.currentUserSubject.asObservable();
get currentUser() {
return this.currentUserSubject.value;
}
login(user: User) {
this.currentUserSubject.next(user);
}
logout() {
this.currentUserSubject.next(null);
}
}
@Component({ })
export class HeaderComponent implements OnInit {
currentUser: User | null = null;
constructor(private auth: AuthService) {}
ngOnInit() {
this.auth.currentUser$.subscribe(user => {
this.currentUser = user;
});
}
}
No comments:
Post a Comment