By using the method of elimination, I found out that the culprit of the issue was the BrowserAnimations module in my app.module.ts. By removing it from my imports it the problem went away. I’ll look into creating a Plunker to demonstrate it.
Update:
This is described in this Github issue.
Update 2017-12-13:
This has now been fixed with this PR, fix(animations): properly recover and cleanup DOM when CD failures occur.