Angular Custom RouteReuseStrategy retrieve method fails with Error: Cannot reattach ActivatedRouteSnapshot created from a different route

I’m trying to achieve tab like feature in my angular application. for that, I created a custom angular RouteReuseStrategy and query parameter passed to identify the respective page handle on the retrieve. On switch between the same base page but parameter different, then retrieve method fails.
For example employee page, I need to have more than one copy of the DetachedRouteHandle of employee form to switch between in my SPA.

            import { Injectable, Injector } from '@angular/core';
        import { RouteReuseStrategy, ActivatedRouteSnapshot, DetachedRouteHandle } from '@angular/router';
        import { Store } from '@ngrx/store'
        import { Observable } from 'rxjs';
        import { RouteTabs } from '../../store/models/pageTab.model'
        import * as rootStateSaveActions from '../../store/actions/rootStateSave.action'
        @Injectable()
        export class CustomReuseStrategy implements RouteReuseStrategy {
            savedRoutes$: Observable<RouteTabs>;
            RouteTabs: RouteTabs;
            constructor(private ngrxStore: Store<RouteTabs>, private injector: Injector) {
                this.savedRoutes$ = ngrxStore.select('saveState');
                this.savedRoutes$.subscribe((state) => {
                    this.RouteTabs = state;
                });
            };
            handlers: { [key: string]: DetachedRouteHandle } = {};
            shouldDetach(route: ActivatedRouteSnapshot): boolean {
                // call when leave the current route
                // TRUE will invoke store method
                // Determine if this route should be detached to be resued later
                return !!route.data && !!(route.data as any).shouldDetach;
            }
            store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {
                // store the detached route
                let pageNo: string = (route.queryParamMap.get('pageNo') == null) ? new Date().getUTCMilliseconds().toString() : route.queryParamMap.get('pageNo');
                this.handlers[pageNo] = handle;
                // ----------ngrx store used to save the page visited details
                let urlName: string = route.data.urlName;
                this.ngrxStore.dispatch(new rootStateSaveActions.CreateSaveRootState({
                    // url: route.routeConfig.path,
                    url: route.routeConfig.path,
                    urlName: urlName,
                    handle: null,  
                    unique: pageNo // used to identify minimized route handle.
                }))
            }
            shouldAttach(route: ActivatedRouteSnapshot): boolean {
                // This method will call after component 
                // Detremine if this route should be reattached
                // If return true "retrieve" method will call
                if (route.routeConfig) {
                    return !!route.routeConfig && !!this.handlers[route.queryParamMap.get('pageNo')];
                }
                else {
                    return false;
                }
            }
            retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle {
                // retrieve the previously stored route
                if (route.routeConfig) {
                    let pageNo: string = route.queryParamMap.get('pageNo');
                    if (this.handlers[pageNo] == undefined) {
                        return null;
                    }
                    else {
                        return this.handlers[pageNo];
                    }
                }
                else {
                    return null;
                }
            }
            shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {
                // Determine if a route should be resued  
                // if it return true routing will not happend
                if (curr.queryParamMap.get('pageNo') != null) {
                    return false;
                }
                return future.routeConfig === curr.routeConfig;
            }
        }

it shows error Error: Cannot reattach ActivatedRouteSnapshot created from a different route

Source: New feed
Source Url Angular Custom RouteReuseStrategy retrieve method fails with Error: Cannot reattach ActivatedRouteSnapshot created from a different route