Angular: привязка ввода компонента к свойству значения из наблюдаемого - PullRequest
0 голосов
/ 12 июня 2019

В Angular 7, когда свойство значения, испускаемого Observable, связано со входом дочернего компонента, ожидается, что входное значение обновляется (и вызывается ngOnChanges), даже когда связанное свойство не изменился?

Учитывая следующее наблюдаемое, которое просто испускает новый объект с идентичными свойствами каждую секунду:

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

Затем привяжите свойство переданного значения к дочернему компоненту:

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

Что я наблюдаю, так это то, что вызывается «что-то» и ngOnChanges из 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>

Работает, как я и ожидал, не задано значение «что-то» и не вызывается ngOnChanges.

Вот пример Stackblitz, который показывает рассматриваемое поведение:

Использование угловых 7.2.1

Возможно, я просто неправильно понял, но поведение кажется непоследовательным

...