I could see you are resetting your todoList$ observable three times (initially, on search, on modal close), instead you could find a declarative way to club these parameter in the declaration itself. Somewhere on these lines:
todoList$ = merge(this.refresh$, this.search$).pipe(
startWith(null),
switchMap(() => this.getTodoList())
)