要订阅一个组件到一个服务事件,您可以按照以下步骤进行操作:
Subject
对象,并在需要广播事件时使用它。例如:import { Subject } from 'rxjs';
@Injectable()
export class MyService {
private eventSubject = new Subject();
// 公共方法,用于订阅事件
getEvent(): Observable {
return this.eventSubject.asObservable();
}
// 私有方法,用于触发事件
private triggerEvent(data: any) {
this.eventSubject.next(data);
}
}
import { Component, OnInit } from '@angular/core';
import { MyService } from 'path/to/my.service';
@Component({
selector: 'app-my-component',
template: `
`
})
export class MyComponent implements OnInit {
constructor(private myService: MyService) {}
ngOnInit() {
this.myService.getEvent().subscribe(data => {
// 在这里处理事件
console.log(data);
});
}
}
import { Component } from '@angular/core';
import { MyService } from 'path/to/my.service';
@Component({
selector: 'app-another-component',
template: `
`
})
export class AnotherComponent {
constructor(private myService: MyService) {}
triggerEvent() {
// 在这里触发事件
this.myService.triggerEvent('Event data');
}
}
现在,当AnotherComponent
中的按钮被点击时,MyComponent
中的订阅者就会接收到事件并处理它。