diff --git a/src/rxreact.tsx b/src/rxreact.tsx
index e2f2da6..9204bdd 100644
--- a/src/rxreact.tsx
+++ b/src/rxreact.tsx
@@ -30,7 +30,7 @@ function withViewModelFactory>(
constructor(props: Difference
>) {
super(props);
let viewModel = viewModelFactory(this.propsObservable);
- this.observableState = combineObservables(viewModel.inputs);
+ this.observableState = Object.keys(viewModel.inputs).length ? combineObservables(viewModel.inputs) : Observable.of({} as S);
this.actions = subjectMapToActionMap(viewModel.outputs);
}
diff --git a/test/rxreact.test.tsx b/test/rxreact.test.tsx
index 48b0031..eb1aa6a 100644
--- a/test/rxreact.test.tsx
+++ b/test/rxreact.test.tsx
@@ -106,6 +106,50 @@ describe("withViewModel", () => {
expect(rendered.find("#other").text()).toContain("moldy cheese");
});
});
+
+ describe("when `inputs` are empty", () => {
+ it("still renders", () => {
+ interface OutputOnlyComponentProps {
+ inputNumber: (_: number) => void;
+ }
+ let Component: React.SFC