【发布时间】:2021-04-30 08:41:20
【问题描述】:
我正在以如下方式使用 RxJs 行为主题。
=> 为所有行为主体提供公共服务,如下面的示例代码
@Injectable()
export class ProjectJobSelectionService {
public postTypeSubject = new BehaviorSubject(PostType.Project);
public selectedProjectSubject = new BehaviorSubject(null);
public selectedJobsiteSubject = new BehaviorSubject(null);
public selectedJobSubject = new BehaviorSubject(null);
public addJobsiteSubject = new BehaviorSubject(null);
}
我有一个侧边栏组件,每次在下一个方法上都需要刷新,否则任何新值都会从各个组件发出。
侧边栏是所有这些主题都在 ngOnInit 方法中订阅的公共组件,并且这些主题是下一个(我的意思是从各个受尊重的组件发出值)
问题
每次这些主体都被自己调用,并且当没有相应的组件被实例化或不在生命周期中时,所尊重的逻辑被调用。
无法检索它的原因,还尝试注释下它获取的代码仍然被自动调用。
任何帮助将不胜感激。
【问题讨论】:
-
BehaviorSubject在每次订阅时自动发出最新的next(或默认值),所以这可能是您遇到的问题? -
是的,所以我的意思是如果有这样的 public selectedProjectSubject = new BehaviorSubject(null);如果是的话,它会自行发射,那么如何克服它?因为我希望仅在下一个时才有效
-
很抱歉,我认为我没有跟随。我想我需要看一下它的功能以及您希望它做什么的演示。
-
尝试使用Subject而不是BehaviorSubject,BehaviorSubject发出最后一个值(在第一次默认值你已经创建它,在这种情况下为null)总是你订阅,Subject只在你订阅后发出值,你'只会发出新的值
标签: angular rxjs rxjs-observables