作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用不同的模块,因此它可以在延迟加载的模块中使用。这是我的服务文件。
import {NgModule, Injectable } from '@angular/core'
import {Subject} from 'rxjs/Subject';
@Injectable()
export class ChangeEventService {
public invokeEvent:Subject<any> = new Subject();
// localId:any = { name:'', eventId:0, orgId:0};
constructor() {
}
public callComponent(currentId:any):void {
console.log("Invoked");
this.invokeEvent.next({localId:currentId});
}
}
@NgModule({
imports: [ ],
exports : [
],
providers: [ ChangeEventService ],
})
export class ChangeEventModule { }
对 Rxjs 主题的订阅仅在更改它的组件/服务中发生变化。
export class xyz {
constructor(private change: ChangeEventService) {
this.change.invokeEvent.subscribe((value) => {
this.event = value.localId;
console.log("I'm chnaged...!!");
});
}
anyFunction(eventdata:any) {
this.change.callComponent(eventdata);
}
}
我仅在更改 invokeEvent 值的组件中获取更新值。
最佳答案
作为@Philipp 评论说我通过在多个模块中提供它来创建我的服务的多个实例。正如@AngularFrance 所建议的,我在其中声明了 app.module(我的应用程序的第一个模块)的提供者。比我第一次没有在任何订阅中获得更新值(调用 callComponent 的订阅除外)。所以我使用了 BehaviorSubject 并给了它任何随机初始值。所以现在它在初始时间向一个组件发送初始值,而不是在更新时向所有订阅者发送更新值。
所以我想这解决了我的问题。
关于javascript - 我想使用 rxjs subject 来检测多个组件中的值变化。但它只显示改变它的组件的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42270000/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!