Решением будет использование канала для функции changeColor.Канал получит значение i, а его функция преобразования выполнит то, что должна делать функция changecolor.
Преимущество конвейера в том, что он чистый и больше не повторится после обнаружения изменения, если он не связан с состояниемкоторые напрямую изменяют результат конвейера.
Другое решение состоит в том, чтобы использовать lodash-декораторы и декоратор memoize.
import {memoize} from 'lodash-decorators';
@memoize()
changeColor(value: number) {
console.log(value);
}
Это не приведет к вводу функции, если она вызывается с теми же значениями.