处于状态的嵌套对象的更改检测

时间:2018-09-17 09:17:15

标签: ngxs

假设我们有一个具有以下结构的状态:

@State<StateModel>({
name: 'pg',
defaults: {
    docs: {
        doc1: { 
            id: 'doc1', 
            content: 'foo', 
        }
        doc2: { 
            id: 'doc2', 
            content: 'bar' 
        }
    }
}

变更检测如何工作?如果我做改变

@Action(UpdateContent)
update(ctx: StateContext<StateModel>) {
    ctx.patchState( { docs.doc2.content: 'something else' } );
}

以下任何可观察到的值都不发出:

obs1$ = store.select( state => state.docs );
obs2$ = store.select( state => state.docs.docs2 );
obs2$ = store.select( state => state.docs.docs2.content );

我不是rxjs编程专家,但似乎很奇怪,有什么主意吗?

1 个答案:

答案 0 :(得分:1)

  1. 尝试像这样obs1$ = store.select( state => state.pg.docs )添加州名 pg

  2. 如果通过@Selector()选择,则不需要州名。

  3. 我假设您的patchState()代码的对象表示法只是一个示例。