【发布时间】:2019-04-30 18:50:36
【问题描述】:
所以我试图通过服务连接两个组件,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 向订阅者发送事件
【问题讨论】:
-
所以
this.change.subsribe(state => console.log(state));上的错字与它无关,对吧?另外,输出是@Output() -
对不起,打错了,但在文件里没问题
-
t 在这种情况下非常适合设置某种示例.. 工作示例.. 您可以在 Stackblitz 轻松做某事
-
1.不要在服务上下文中使用事件发射器或输出,使用 rxjs 主题或行为主题,输出和 EventEmitters 专门用于组件事件和模板绑定 2. 如何/在哪里提供此服务?查看此链接以获取有关第 1 点的更多信息:stackoverflow.com/questions/36076700/…
-
@LibbyLebyane 我会考虑 bryan60 评论.. 但是.. 我在这里看不到任何问题stackblitz example
标签: javascript angular typescript observable angular-event-emitter