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 { }
Sumit patel
  • 3,807
  • 9
  • 34
  • 61

0 Answers0