Here is my angular2 code.
Template
You have to schedule calls to 'offsetWidth' after rendering cycle, angular executes draw on the end of microtask queue, so you could try setTimeout(..., 0) or run Promise.resolve().then(...) outside of zonejs. Hope it helps.
setTimeout(..., 0)
Promise.resolve().then(...)