角度数组可观察订阅不会触发

时间:2018-03-19 11:28:04

标签: angular observable ngrx ngrx-store

我有一个类型为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 }}

但是由于某种原因,我的组件中的订阅代码在商店更新时不会触发。我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

我错误地改变(变异)我的Person []数组的状态。

我有

{
    return state = action.payload;
}

应该在哪里

{
    return state = [].concat(action.payload);
}