因此,我正在尝试通过服务LoaderComponent
和AppComponent
和LoaderService
连接两个组件,以便在应用程序获取数据时显示加载程序。但是,当我尝试使用EventEmitter
发出对组件的更改时,它们没有得到更改,但是当服务订阅时
本身,它可以得到改变
LoaderService.ts
import { EventEmitter, Injectable } from '@angular/core';
@Injectable()
class LoaderService {
@Output change: EventEmitter<number> = new EventEmitter<number>();
private state: number = 0;
constructor() {
this.change.subscribe(state => console.log(state));
this.setState(1)
}
setState(state: number) {
this.state = state;
this.change.emit(this.state);
}
}
// Shows state when but outside of the service event is not detected, also tried EventEmitter from from events
我希望将事件从
LoaderService
发送给订阅者 最佳答案
您需要在某个组件中使用LoaderService
来创建angular,如果我们不使用任何服务,那么angular会自动将其丢弃。在应用程序组件中注入LoaderService
,如下所示:constructor(private _loadService: LoaderService) {}
,然后您将看到console.log()
。
另外,建议在服务中使用Rxjs中的Subject或Behavior Subject,而不是Output。
关于javascript - EventEmitter的发送方法不向订阅者发送值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55927093/