Angular 如何检查eventListener是否已删除?
我想在取消订阅observable时删除事件侦听器。我的问题是如何检查事件侦听器是否已删除。有没有办法检查事件侦听器是否已删除Angular 如何检查eventListener是否已删除?,angular,events,addeventlistener,Angular,Events,Addeventlistener,我想在取消订阅observable时删除事件侦听器。我的问题是如何检查事件侦听器是否已删除。有没有办法检查事件侦听器是否已删除 export class BroadcastService { public events: Observable < any > ; public channel = new BroadcastChannel('test_channel'); constructor() { this.events = Observable.crea
export class BroadcastService {
public events: Observable < any > ;
public channel = new BroadcastChannel('test_channel');
constructor() {
this.events = Observable.create((observer) => {
const listener = (ev) => {
observer.next(ev.data),
console.log("on")
};
this.channel.addEventListener('message', listener);
return () => {
this.channel.removeEventListener('message', listener);
};
});
}
public addPerson(person: any) {
this.channel.postMessage(person);
}
}
导出类广播服务{
公共事件:可观察的;
公共频道=新广播频道(“测试频道”);
构造函数(){
this.events=Observable.create((observator)=>{
常量侦听器=(ev)=>{
下一个观察者(ev.数据),
console.log(“登录”)
};
this.channel.addEventListener('message',listener);
return()=>{
this.channel.removeEventListener('message',listener);
};
});
}
公共地址人(人:任何){
this.channel.postMessage(person);
}
}
和我的组件:
export class Page2Component implements OnInit {
private componetDestroyed: Subject < any > = new Subject();
private xx: any;
public person = {}
as Person;
constructor(public broadCastService: BroadcastService) {
}
ngOnInit() {
this.xx = this.broadCastService.events.subscribe((e) => {
this.person.age = e.age;
this.person.name = e.name;
});
console.log("onInit");
}
ngOnDestroy() {
this.xx.unsubscribe();
console.log("onDestroy");
}
导出类Page2Component实现OnInit{
私有组件已销毁:Subject=新Subject();
私人xx:任何;
公众人士={}
作为人;
构造器(公共广播服务:广播服务){
}
恩戈尼尼特(){
this.xx=this.broadCastService.events.subscribe((e)=>{
this.person.age=e.age;
this.person.name=e.name;
});
console.log(“onInit”);
}
恩贡德斯特罗(){
此.xx.取消订阅();
控制台日志(“onDestroy”);
}
您可以在您的服务中手动执行此操作:
import { Observable } from 'rxjs';
export class BroadcastService {
public events: Observable<any>;
public channel = new BroadcastChannel('test_channel');
constructor() {
this.events = Observable.create((observer) => {
this.channel.addEventListener('message', (ev) => {
observer.next(ev.data)
});
return () => {
this.channel.removeEventListener('message', (ev) => {
observer.next({
...ev.data,
removed: true
})
});
};
});
}
public addPerson(person: any) {
this.channel.postMessage(person);
}
}
从'rxjs'导入{Observable};
导出类广播服务{
公共事件:可见;
公共频道=新广播频道(“测试频道”);
构造函数(){
this.events=Observable.create((observator)=>{
this.channel.addEventListener('消息',(ev)=>{
下一个观察者(电动汽车数据)
});
return()=>{
this.channel.removeEventListener('message',(ev)=>{
下一个({
…电动汽车数据,
删除:true
})
});
};
});
}
公共地址人(人:任何){
this.channel.postMessage(person);
}
}
一旦你订阅了它,你可以检查数据是否删除了它的属性。你能给我一个例子吗,对不起,我是Angular的新手。根据我的理解,这表明观察对象是否已经被取消订阅。但是我如何检查removeEventListener是否被执行?更新了答案。请检查。