Declarative two-way data binding using RxJS