因此,我正在尝试通过服务LoaderComponentAppComponentLoaderService连接两个组件,以便在应用程序获取数据时显示加载程序。但是,当我尝试使用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/

10-09 18:13