Blog>
Snippets

Loading Remote Micro-Frontend Modules

Provide an example of how to dynamically load a remote module using Angular's loadChildren function along with module federation.
import { loadRemoteModule } from '@angular-architects/module-federation';

// Define module federation configuration
const remoteConfig = {
  remoteEntry: 'http://remote-server.com/remoteEntry.js', // URL to remote entry file
  remoteName: 'remote', // Name of the remote container
  exposedModule: './Module' // Name of the exposed module
};

// Angular routing configuration
const routes: Routes = [
  {
    path: 'remote-module',
    loadChildren: () => loadRemoteModule(remoteConfig)
      .then(m => m.RemoteModule) // Replace RemoteModule with the actual class name
  }
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }
This code snippet is a basic Angular Routing configuration that uses the loadRemoteModule function provided by the @angular-architects/module-federation package to load a remote module. The 'remoteEntry' is the URL where the remoteEntry.js file of the micro-frontend is hosted. The 'remoteName' is the name of the remote container, and 'exposedModule' is the path to the module exposed by the remote. When a user navigates to the 'remote-module' path, Angular will dynamically load the remote module.