У меня есть поток объектов, и мне нужно сравнить, если текущий объект не такой же, как предыдущий, и в этом случае испускает новое значение. Я обнаружил, что оператор differUntilChanged должен делать именно то, что я хочу, но по какой-то причине он никогда не испускает значение, кроме первого. Если я удаляю значение differUntilChanged, выдается нормально.
Мой код:
export class SettingsPage {
    static get parameters() {
        return [[NavController], [UserProvider]];
    }
    constructor(nav, user) {
        this.nav = nav;
        this._user = user;
        this.typeChangeStream = new Subject();
        this.notifications = {};
    }
    ngOnInit() {
        this.typeChangeStream
            .map(x => {console.log('value on way to distinct', x); return x;})
            .distinctUntilChanged(x => JSON.stringify(x))
            .subscribe(settings => {
                console.log('typeChangeStream', settings);
                this._user.setNotificationSettings(settings);
            });
    }
    toggleType() {
        this.typeChangeStream.next({
            "sound": true,
            "vibrate": false,
            "badge": false,
            "types": {
                "newDeals": true,
                "nearDeals": true,
                "tematicDeals": false,
                "infoWarnings": false,
                "expireDeals": true
            }
        });
    }
    emitDifferent() {
        this.typeChangeStream.next({
            "sound": false,
            "vibrate": false,
            "badge": false,
            "types": {
                "newDeals": false,
                "nearDeals": false,
                "tematicDeals": false,
                "infoWarnings": false,
                "expireDeals": false
            }
        });
    }
}