角度:将组件输入绑定到可观察值的属性

时间:2019-06-12 20:03:05

标签: angular data-binding binding observable

在Angular 7中,当Observable发出的值的属性绑定到子组件的输入时,期望输入值得到更新(并调用ngOnChanges),甚至绑定属性没有更改时?

鉴于以下可观察到的情况,它们每秒仅发出一个具有相同属性的新对象:

const source$ = interval(1000).pipe(map(() => ({
  prop: 'something'
})));
this.obs$ = source$;

然后将发出的值的属性绑定到子组件:

<test-comp [something]="(obs$ | async)?.prop"></test-comp>

我观察到的是,ngOnChanges中的'something'setter和test-comp被调用了。

此外,在ngOnChanges中检查当前值和先前值是否比较,表明它们是相等的:

if(changes['something'].currentValue === changes['something'].previousValue) {
  console.log('They are equal');
}

使用一个单独的可观察对象,它简单地从源可观察对象映射属性,如下所示:

this.obs2$ = source$.pipe(map(v => v.prop));

<test-comp [something]="(obs$ | async)"></test-comp>

按我预期的方式工作,未设置'something'值并且未调用ngOnChanges

这是一个Stackblitz示例,显示了相关行为:

使用Angular 7.2.1

也许我只是完全弄错了,但是行为似乎不一致

0 个答案:

没有答案