不使用库的Angular状态管理

时间:2019-12-05 04:52:04

标签: javascript angular typescript rxjs angular7

我在应用程序中使用了一个数据表(使用“材料数据表”),我想构建一个简单的示例,其中不使用NGRX等库就保存了过滤器的状态。

我的问题很小,目前不使用整个库。我有什么方法可以做到这一点?

3 个答案:

答案 0 :(得分:0)

超级简单的状态实用程序可能类似于以下内容。

this.state = {}
this.setState = (key,value) => this.state={...this.state,key:value}

您可以将其放在单例共享服务中。

答案 1 :(得分:0)

您可以使用rxjs进行简单的状态服务

import { BehaviorSubject } from 'rxjs';
import { Injectable } from '@angular/core';

@Injectable({
    providedIn: 'root'
})
export class StateService {
    private _state$ = new BehaviorSubject({});

    dispatchUserLoggedStatus(status) {
        this._state$.next({
            ...this._state$.value,
            isLogged: status
        });
    }

    get state$() {
        return this._state$.asObservable();
    }
}

使用库文件的目的是当您需要其他功能时

答案 2 :(得分:0)

使用 rxjs-observable-store ,这是一个很好的解决方案,该商店的状态为BehaviorSubject,您可以在组件中订阅状态更新

this.store.state$.subscribe(state => {
  // Logic to execute on state update
});

或使用

this.store.state;