|
7 | 7 | */ |
8 | 8 |
|
9 | 9 | import {InjectFlags} from '../di/interface/injector'; |
10 | | -import {assertDefined, assertEqual, assertGreaterThanOrEqual, assertLessThan, assertNotEqual} from '../util/assert'; |
| 10 | +import {assertDefined, assertEqual, assertGreaterThanOrEqual, assertLessThan, assertNotEqual, throwError} from '../util/assert'; |
11 | 11 |
|
12 | 12 | import {assertLViewOrUndefined, assertTNodeForLView, assertTNodeForTView} from './assert'; |
13 | 13 | import {DirectiveDef} from './interfaces/definition'; |
@@ -172,24 +172,23 @@ interface InstructionState { |
172 | 172 | * ``` |
173 | 173 | */ |
174 | 174 | bindingsEnabled: boolean; |
175 | | - |
176 | | - /** |
177 | | - * In this mode, any changes in bindings will throw an ExpressionChangedAfterChecked error. |
178 | | - * |
179 | | - * Necessary to support ChangeDetectorRef.checkNoChanges(). |
180 | | - * |
181 | | - * checkNoChanges Runs only in devmode=true and verifies that no unintended changes exist in |
182 | | - * the change detector or its children. |
183 | | - */ |
184 | | - isInCheckNoChangesMode: boolean; |
185 | 175 | } |
186 | 176 |
|
187 | 177 | const instructionState: InstructionState = { |
188 | 178 | lFrame: createLFrame(null), |
189 | 179 | bindingsEnabled: true, |
190 | | - isInCheckNoChangesMode: false, |
191 | 180 | }; |
192 | 181 |
|
| 182 | +/** |
| 183 | + * In this mode, any changes in bindings will throw an ExpressionChangedAfterChecked error. |
| 184 | + * |
| 185 | + * Necessary to support ChangeDetectorRef.checkNoChanges(). |
| 186 | + * |
| 187 | + * The `checkNoChanges` function is invoked only in ngDevMode=true and verifies that no unintended |
| 188 | + * changes exist in the change detector or its children. |
| 189 | + */ |
| 190 | +let _isInCheckNoChangesMode = false; |
| 191 | + |
193 | 192 | /** |
194 | 193 | * Returns true if the instruction state stack is empty. |
195 | 194 | * |
@@ -336,12 +335,13 @@ export function getContextLView(): LView { |
336 | 335 | } |
337 | 336 |
|
338 | 337 | export function isInCheckNoChangesMode(): boolean { |
339 | | - // TODO(misko): remove this from the LView since it is ngDevMode=true mode only. |
340 | | - return instructionState.isInCheckNoChangesMode; |
| 338 | + !ngDevMode && throwError('Must never be called in production mode'); |
| 339 | + return _isInCheckNoChangesMode; |
341 | 340 | } |
342 | 341 |
|
343 | 342 | export function setIsInCheckNoChangesMode(mode: boolean): void { |
344 | | - instructionState.isInCheckNoChangesMode = mode; |
| 343 | + !ngDevMode && throwError('Must never be called in production mode'); |
| 344 | + _isInCheckNoChangesMode = mode; |
345 | 345 | } |
346 | 346 |
|
347 | 347 | // top level variables should not be exported for performance reasons (PERF_NOTES.md) |
|
0 commit comments