【发布时间】:2018-03-19 11:28:03
【问题描述】:
我有一个 Person 类型的数组。
export interface Person {
name: string;
age: number;
}
我有一个包含此状态切片的 Observable 的组件。
export class PassengersComponent implements OnInit {
public passengers$: Observable<Person[]>;
constructor(public store: Store<fromRoot.State>) { }
ngOnInit() {
this.passengers$ = this.store.select(fromStore.getPassengers);
// subscribe to the observable to detect any changes
this.passengers$.subscribe((data: Person[]) => {
console.log('Subscription hit!'); //<--- NOT BEING HIT AFTER 1ST TIME
});
}
}
我只是简单地将对象数组推出到视图中。
<input type="number" *ngFor="let p of (passengers$ | async)" [ngModel]="p.age" (ngModelChange)="onPassengerAgeChange($event, p.name)">
“onPassengerAgeChange()”事件触发,我的商店更新成功。我可以通过添加来验证这一点:
{{ (passengers$ | async) | json }}
但是由于某种原因,我的组件中的订阅代码在商店更新时不会触发。我在这里错过了什么?
【问题讨论】:
-
这看起来不错,你能做一个演示,它不能按你的意愿工作吗?
-
你能把方法的内容展示一下
onPassengerAgeChange吗? -
如果你使用异步管道,你不需要显式订阅
-
可以分享一下店铺更新方法吗?
标签: angular observable ngrx ngrx-store