ngrx Angular 2 RC5
ngrx with Angular 2 RC5
我正在尝试将 ngrx 与 RC5 一起使用,但我遇到了一些有线行为。 ngrx 日志监视器正确捕获状态更改,但它们不会发送给我的订阅者。
但是一旦我更改页面(我正在使用@angular/router 3),我所有的状态更改都会一个接一个地发送给订阅者。
这是代码示例
ngOnInit() {
this._store.dispatch(this._mediaActions.load());
this._positionListener = this._store
.let(getMediaFolderContent())
.subscribe(a => this.position = a);
this._store.let(getMediaFolderContent()).subscribe(a => console.log(a));
this._store.select(s => s.media).subscribe(a => console.log('just a test: ', a));
}
当我第一次导航到该页面时,我获得了最新状态,但没有捕获到后续更改。然后,一旦我从页面导航和返回页面,我就会得到状态更改。
我知道这对于一个有效的问题来说是不够的,但是代码太多了,我不知道从哪里开始复制所有的代码。我只是希望有人在 RC5 中处理过类似的问题。
所有代码在迁移到 RC5 之前都有效。
我已经设法解决了。我希望这可以帮助别人。
所以问题出在我的减速器上,我会做的是:
return Object.assign(state, {something: 'something'}
但事实证明,只有在我创建新对象时才会发出状态变化。所以我要做的就是像这样更改分配:
return Object.assign({}, state, {something: 'something'}
感谢@wiredprogrammer 为我指明了正确的方向。
我正在尝试将 ngrx 与 RC5 一起使用,但我遇到了一些有线行为。 ngrx 日志监视器正确捕获状态更改,但它们不会发送给我的订阅者。
但是一旦我更改页面(我正在使用@angular/router 3),我所有的状态更改都会一个接一个地发送给订阅者。
这是代码示例
ngOnInit() {
this._store.dispatch(this._mediaActions.load());
this._positionListener = this._store
.let(getMediaFolderContent())
.subscribe(a => this.position = a);
this._store.let(getMediaFolderContent()).subscribe(a => console.log(a));
this._store.select(s => s.media).subscribe(a => console.log('just a test: ', a));
}
当我第一次导航到该页面时,我获得了最新状态,但没有捕获到后续更改。然后,一旦我从页面导航和返回页面,我就会得到状态更改。
我知道这对于一个有效的问题来说是不够的,但是代码太多了,我不知道从哪里开始复制所有的代码。我只是希望有人在 RC5 中处理过类似的问题。
所有代码在迁移到 RC5 之前都有效。
我已经设法解决了。我希望这可以帮助别人。
所以问题出在我的减速器上,我会做的是:
return Object.assign(state, {something: 'something'}
但事实证明,只有在我创建新对象时才会发出状态变化。所以我要做的就是像这样更改分配:
return Object.assign({}, state, {something: 'something'}
感谢@wiredprogrammer 为我指明了正确的方向。