【发布时间】:2020-04-10 10:01:51
【问题描述】:
我的服务中有一个我想订阅的 observable。
在第一时间返回良好的初始值,感谢 BehaviorSubject。
但是当我在服务中使用 next() 更新值时,不会调用组件中的订阅 ...
这是我服务中的代码:
activeDeepView:any = false;
deepViewStatus: Subject<boolean> = new BehaviorSubject<boolean>(false);
deepView(){
this.activeDeepView = !this.activeDeepView;
this.deepViewStatus.next(this.activeDeepView);
console.log("deep view status", this.deepViewStatus);
}
这是我组件中的代码:
this.globalFn.deepViewStatus.subscribe(value => {
console.log(value);
if(value == true){
this.renderer.setStyle(this.fsModal.nativeElement,'transition','0.3s ease-out');
this.renderer.setStyle(this.fsModal.nativeElement,'pointer-events','all');
this.renderer.setStyle(this.fsModal.nativeElement,'transform','translateY(0px)');
} else {
this.renderer.setStyle(this.fsModal.nativeElement,'transition','0.3s ease-out');
this.renderer.setStyle(this.fsModal.nativeElement,'pointer-events','none');
this.renderer.setStyle(this.fsModal.nativeElement,'transform','translateY(1000px)');
}
})
我的错误在哪里?我会很高兴学习,因为我已经尝试了很多东西,但目前没有任何效果......
谢谢大家!
【问题讨论】:
-
deepView()是从您的订阅所在的同一组件中调用的,还是从其他地方调用的? -
您好!感谢您的回答,它是从另一个组件调用的,providerIn:root 在我的服务中,它必须在组件中?
-
听起来你有一个标准设置。你能在 stackblitz 中重现你的问题吗?
-
是偶然完成的吗?这看起来不错,向我们展示代码的其他部分