作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力解决一些问题 ngrx教程,我想我开始让我的大脑围绕它。
我不明白的是如何做一些像从 Store
获取值这样简单的事情。 :
目标 : 从商店获取一个值而不必subscribe
到它。
IE: store.myStoreProperty
或 store.getValue(<selector>)
或者 ?
据我所知,从商店获取值(value)的唯一方法是做这样的事情:
private readonly _store: Store<ApplicationState>;
// ...
this._store.select(state => state.currentUser).subscribe(user => {
if (!user) { return; }
// ...
});
import { createSelector } from '@ngrx/store';
export interface FeatureState {
counter: number;
}
export interface AppState {
feature: FeatureState;
}
export const selectFeature = (state: AppState) => state.feature;
export const selectFeatureCount = createSelector(
selectFeature,
(state: FeatureState) => state.counter
);
selectFeature
或传递给
this._store.select(selectFeature)
获取实际值,但它返回
observable
(因此希望您订阅它)。
effect
这是从服务器获取该信息,并且一切正常。但是,我对如何简单地从
store
访问值感到有些困惑。无需洒
.subscribe
到处。
最佳答案
您如何添加自己的订阅功能并每次都调用它?
getValue(obj: Observable<any>){
let value: any;
obj.subscribe(v => value = v);
return value;
}
showme(){
console.log(this.getValue(this.user$)); // single value => works
console.log(this.getValue(this.projects$)); // array => works
}
import * as fromAuth from '../../auth/state/reducers';
import * as fromData from '../../data/state/reducers';
constructor(private store: Store<fromAuth.State & fromData.State>) {
this.user$ = store.pipe(select(fromAuth.getUser));
let user = this.getValue(store.pipe(select(fromAuth.getUser))); // this would get you the current user value
关于angular - NgRx 无需订阅即可获取值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59296040/
我是一名优秀的程序员,十分优秀!