In development mode, change detection does a second run immediately after the first run and produces an error if any bound value has changed between the first and the second run. This helps to locate bugs where checking values has side-effects or fields or functions don't return the same value on subsequent calls which undermines Angular's change detection.
In development mode, during the second change detection run, Angular also does some deep object comparisons that it won't do in production to detect model changes that are disallowed.
Update:
In development mode, a hint is also printed to the console when the HTML sanitizer service strips values from bindings [innerHTML]="..."
or [ngStyle]="..."
.
See also: In RC.1 some styles can't be added using binding syntax
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…