我有一个类型为Person my state的数组。
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 }}
但是由于某种原因,我的组件中的订阅代码在商店更新时不会触发。我在这里缺少什么?
答案 0 :(得分:0)
我错误地改变(变异)我的Person []数组的状态。
我有
{
return state = action.payload;
}
应该在哪里
{
return state = [].concat(action.payload);
}