20 Commits

Author SHA1 Message Date
Paul Gammans
95ad452e54 fix(router): fix load interaction of navigation and preload strategies ()
Fix router to ensure that a route module is only loaded once especially
in relation to the use of preload strategies with delayed or partial
loading.

Add test to check the interaction of PreloadingStrategy and normal
router navigation under differing scenarios.
Checking:
 * Prevention of duplicate loading of modules.
   related to 
 * Prevention of duplicate RouteConfigLoad(Start|End) events
   related to 
 * Ensuring preload strategy remains active for submodules if needed
   The selected preload strategy should still decide when to load submodules
 * Possibility of memory leak with unfinished preload subscription
   related to 
 * Ensure that the stored loader promise is cleared so that subsequent
   load will try the fetch again.
 * Add error handle error from loadChildren
 * Ensure we handle error from with NgModule create

Fixes   

PR Close 
2021-02-16 11:28:50 -08:00
Joey Perrott
267c566baf Revert "fix(router): fix load interaction of navigation and preload strategies ()" ()
This reverts commit e9a19a6152cc742f1617ee696202a7fbd06fff3d.

PR Close 
2021-02-11 11:59:10 -08:00
Paul Gammans
e9a19a6152 fix(router): fix load interaction of navigation and preload strategies ()
Fix router to ensure that a route module is only loaded once especially
in relation to the use of preload strategies with delayed or partial
loading.

Add test to check the interaction of PreloadingStrategy and normal
router navigation under differing scenarios.
Checking:
 * Prevention of duplicate loading of modules.
   related to 
 * Prevention of duplicate RouteConfigLoad(Start|End) events
   related to 
 * Ensuring preload strategy remains active for submodules if needed
   The selected preload strategy should still decide when to load submodules
 * Possibility of memory leak with unfinished preload subscription
   related to 
 * Ensure that the stored loader promise is cleared so that subsequent
   load will try the fetch again.
 * Add error handle error from loadChildren
 * Ensure we handle error from with NgModule create

Fixes   

PR Close 
2021-02-11 09:15:09 -08:00
Martin Sikora
b37a9eba1a fix(router): lazy loaded modules without RouterModule.forChild() won't cause an infinite loop ()
When loading a module that doesn't provide `RouterModule.forChild()` preloader will get stuck
in an infinite loop and throw `ERROR Error: Maximum call stack size exceeded.`
The issue is that child module's `Injector` will look to its parent `Injector` when it doesn't
find any `ROUTES` so it will return routes for it's parent module instead. This will load the
child again that returns its parent's routes and so on.

Closes 

PR Close 
2021-01-15 10:39:55 -08:00
Joey Perrott
763023472b fix(router): prevent calling unsubscribe on undefined subscription in RouterPreloader ()
Previously, the `ngOnDestroy` method called `unsubscribe` regardless of if `subscription` had
been initialized.  This can lead to an error attempting to call `unsubscribe` of undefined.
This change prevents this error, and instead only attempts `unsubscribe` when the subscription
has been defined.

PR Close 
2020-08-05 10:54:41 -07:00
Joey Perrott
d1ea1f4c7f build: update license headers to reference Google LLC ()
Update the license headers throughout the repository to reference Google LLC
rather than Google Inc, for the required license headers.

PR Close 
2020-05-26 14:26:58 -04:00
Joey Perrott
698b0288be build: reformat repo to new clang@1.4.0 ()
PR Close 
2020-04-14 12:08:36 -07:00
Marc Laval
8e9858fadb fix(ivy): align NgModuleRef implementation between Ivy and ViewEngine ()
Solves FW-765 and FW-767

PR Close 
2018-12-06 13:35:08 -08:00
Misko Hevery
f52600e261 test(ivy): add ability to find already passing tests ()
PR Close 
2018-12-05 09:34:52 -08:00
Marc Laval
35e02ad5e0 test(ivy): add root causes for router TestBed failures ()
PR Close 
2018-11-30 14:58:22 -08:00
Marc Laval
a566e52ca4 test(ivy): run more router tests in CI ()
PR Close 
2018-11-30 14:58:22 -08:00
Misko Hevery
39e426cde3 fix(ivy): TestBed.get(Compiler) throws "Error: Runtime compiler is not loaded" ()
BREAKING CHANGE:

The public API for `DebugNode` was accidentally too broad. This change removes
1. Public constructor. Since `DebugNode` is a way for Angular to communicate information
   on to the developer there is no reason why the developer should ever need to
   Instantiate the `DebugNode`
2. We are also removing `removeChild`, `addChild`, `insertBefore`, and `insertChildAfter`.
   All of these methods are used by Angular to constructor the correct `DebugNode` tree.
   There is no reason why the developer should ever be constructing a `DebugNode` tree
   And these methods should have never been made public.
3. All properties have been change to `readonly` since `DebugNode` is used by Angular
   to communicate to developer and there is no reason why these APIs should be writable.

While technically breaking change we don’t expect anyone to be effected by this change.

PR Close 
2018-11-27 13:42:23 -08:00
Marc Laval
8ce59a583b test(ivy): run router tests with ivy on CI ()
PR Close 
2018-11-21 09:19:40 -08:00
Jason Aden
45eff4cc65 fix(router): don't mutate route configs ()
Fixes 

PR Close 
2018-02-22 13:35:38 -08:00
Misko Hevery
3d50fd7cac build: add bazel test rules for remainder of packages ()
PR Close 
2017-12-22 13:10:51 -08:00
Tobias Bosch
ce1d7c4a6e refactor: use view engine also for NgModuleFactorys ()
* refactor(core): provide error message in stack for reflective DI

Fixes 

* fix(compiler): make AOT work with `noUnusedParameters`

Fixes 

* refactor: use view engine also for `NgModuleFactory`s

This is a prerequisite for being able to mock providers
in AOTed code later on.
2017-05-11 10:26:02 -07:00
Miško Hevery
5293794316 fix: turn on nullability in the code base. 2017-04-18 12:07:33 -07:00
Victor Berchet
ea4afebeb9 refactor(router): drop the InternalRoute interface 2017-04-14 09:08:13 -07:00
Victor Berchet
83527fd4fb test(router): test preloading when a module is already loaded 2017-04-10 16:35:47 -06:00
Jason Aden
3e51a19983 refactor: move angular source to /packages rather than modules/@angular 2017-03-08 16:29:27 -08:00