如果我的ReplaySubject内容初始化后在组件中为空,我想给它一个值,但是每次它使用/api/bulletin/getall
值对其进行初始化,并且它覆盖之前在onViewChanged
函数中分配的值时, ,如何检查我的ReplaySubject是否有值,然后分配值?
export abstract class BaseComponent implements AfterContentInit {
private currentResultsQueryPathSubject: ReplaySubject<string> = new ReplaySubject(1);
protected get currentResultsQueryPath(): Observable<string> { return this.currentResultsQueryPathSubject.asObservable(); }
public ngAfterContentInit(): void {
this.currentResultsQueryPathSubject.next('/api/bulletin/getall');
}
public onViewChanged(event: any): void {
this.currentResultsQueryPathSubject.next('/api/otheragencybulletin/getall');
}
}
答案 0 :(得分:0)
您所描述的内容似乎与BehaviourSubject
的含义相似。它基本上为您提供了ReplaySubject(1)
的所有功能,并且还记住了发出的最后一个值,可以使用getValue()
方法进行访问。
唯一重要的区别是,除非您特别希望null
为它的初始值,否则必须使用有意义的值来初始化它。
类似
private currentResultsQueryPathSubject: BehaviourSubject<string> =
new BehaviourSubject<string>(null);
可能就是您想要的。
答案 1 :(得分:0)
我能够通过将ReplaySubject声明为const来解决此问题:
const currentResultsQueryPathSubject: BehaviorSubject<string> = new BehaviorSubject('..route');