1

Firstly, I tried all the questions & answers related to this topic. Additionally and I tried related questions and try to solve it but no success. So please read my question thoroughly.

Problem: shared Module 2 time add on memory. I want only one time.

I have created a small project using a lazy loading module. first, click to main module afterload module module1 using a lazy module. after inside again load module2 module. shared module import on module1 and module 2

Refer Link : Can lazy-loaded modules share the same instance of a service provided by their parent?

Angular 4 - Multiple instances of modules in memory

2 instances created on the shared module on Memory please see picture enter image description here

Project Structure

Project Structure

Code

shared/shared

shared.module.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { HelloWordlComponent } from './hello-wordl/hello-wordl.component';
@NgModule({
  declarations: [HelloWordlComponent],
  imports: [
    CommonModule,    
  ],
  exports:[HelloWordlComponent]
})
export class SharedModule { }

module1.component.html

<p>module1 works!</p>
<a [routerLink]="['module2']">Load  Module2</a>
<app-hello-wordl></app-hello-wordl>
<router-outlet></router-outlet>

module1-routing.module.ts

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { DashboardComponent } from './dashboard/dashboard.component';
import { Module1Component } from './module1.component';

const routes: Routes = [{
    path: '',
    component: Module1Component,
    children: [
    { path: '', component: DashboardComponent },
    {
        path: 'module2',
        loadChildren: () => import('./../module2/module2.module').then(m => m.Module2Module)
      
    }]
  }
  ];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class Module1RoutingModule { }

module1.module.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { SharedModule } from '../shared/shared.module';
import { DashboardComponent } from './dashboard/dashboard.component';
import { Module1RoutingModule } from './module1-routing.module';
import { Module1Component } from './module1.component';



@NgModule({
  declarations: [DashboardComponent, Module1Component],
  imports: [
    CommonModule,
    SharedModule,  //---> **shared Module Add**
    Module1RoutingModule,
  ]
})
export class Module1Module { }

module2-routing.module.ts

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { Module2Component } from './module2.component';
import { DashboardComponent } from './dashboard/dashboard.component';


const routes: Routes = [{
  path: '',
  component: Module2Component,
  children: [
  { path: '', component: DashboardComponent },
  {
    path: 'dashboard',component:DashboardComponent
    
  }]
}
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class Module2RoutingModule { }

module2.component.html

<p>module2 works!</p>
<app-hello-wordl></app-hello-wordl>
<router-outlet></router-outlet>

module2.module.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { SharedModule } from '../shared/shared.module';
import { Module2Component } from './module2.component';
import { Module2RoutingModule } from '../module2/module2-routing.module';
import { DashboardComponent } from './dashboard/dashboard.component';



@NgModule({
  declarations: [Module2Component,DashboardComponent],
  imports: [
    CommonModule,
    SharedModule, // ---> **shared module add**
    Module2RoutingModule,
  ]
})
export class Module2Module { }

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.