2018-04-04 21:21:12 -07:00
/ * *
* @license
* Copyright Google Inc . All Rights Reserved .
*
* Use of this source code is governed by an MIT - style license that can be
* found in the LICENSE file at https : //angular.io/license
* /
import { TNode } from './interfaces/node' ;
/** Called when directives inject each other (creating a circular dependency) */
export function throwCyclicDependencyError ( token : any ) : never {
throw new Error ( ` Cannot instantiate cyclic dependency! ${ token } ` ) ;
}
/** Called when there are multiple component selectors that match a given node */
export function throwMultipleComponentError ( tNode : TNode ) : never {
throw new Error ( ` Multiple components match node with tagname ${ tNode . tagName } ` ) ;
}
/** Throws an ExpressionChangedAfterChecked error if checkNoChanges mode is on. */
export function throwErrorIfNoChangesMode (
2018-11-21 21:14:06 -08:00
creationMode : boolean , oldValue : any , currValue : any ) : never | void {
let msg =
` ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: ' ${ oldValue } '. Current value: ' ${ currValue } '. ` ;
if ( creationMode ) {
msg +=
` It seems like the view has been created after its parent and its children have been dirty checked. ` +
` Has it been created in a change detection hook ? ` ;
2018-04-04 21:21:12 -07:00
}
2018-11-21 21:14:06 -08:00
// TODO: include debug context
throw new Error ( msg ) ;
2018-04-04 21:21:12 -07:00
}