【问题标题】:angular array observable subscription not triggering角度数组可观察订阅未触发
【发布时间】: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


【解决方案1】:

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

我有

{
    return state = action.payload;
}

它应该在哪里

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 2020-03-08
    • 2017-06-21
    相关资源
    最近更新 更多