Задайте значение ReplaySubject, если оно пустое - PullRequest
0 голосов
/ 27 октября 2019

Я хочу дать моему 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');
    }
}

1 Ответ

0 голосов
/ 28 октября 2019

То, что вы описываете, похоже на то, для чего создан BehaviourSubject. Он в основном дает вам все функциональные возможности ReplaySubject(1) и, кроме того, запоминает последнее выданное значение, к которому можно обратиться с помощью метода getValue().

Единственное важное отличие состоит в том, что вам придется инициировать егос осмысленным значением, если только вы не хотите, чтобы null было его начальным значением.

Что-то вроде

private currentResultsQueryPathSubject: BehaviourSubject<string> = 
    new BehaviourSubject<string>(null);

может быть тем, что вы ищете.

...