Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

236
Vistas
Federación de módulos: cómo agregar EventListener en la aplicación Shell para componentes web de elementos angulares de aplicaciones MFE

Estoy usando Angular v14.1.1 y @angular-architects/module-federation v14. Y en MFE que usan Angular elements createCustomElement y lo expone como ./web-component usando @angular-architects/module-federation webpack config. Desde la aplicación MFE, se emite un evento pero no se obtiene cómo agregar un oyente de MFE en la aplicación de shell para escuchar el evento.

por ejemplo

Aplicación MFE

App.module.ts

 export class AppModule implements DoBootstrap { constructor(private injector: Injector) { } ngDoBootstrap(): void { if (!customElements.get('angular14-customer')) { customElements.define( 'angular14-customer', createCustomElement(MFEComponent, { injector: this.injector }) ); } } }

Aplicación de shell

AppRoutingModule ts

 import { WebComponentWrapper, WebComponentWrapperOptions } from '@angular-architects/module-federation-tools'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; const routes: Routes = [ { path: 'angular14', component: WebComponentWrapper, data: { type:'module', remoteEntry: 'http://localhost:4201/remoteEntry.js', exposedModule: './web-components', elementName: 'angular14-customer' } as WebComponentWrapperOptions }]; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule] }) export class AppRoutingModule { }

Por ejemplo, Evento de componente de MFE:

 @Output() saveRecord: EventEmitter<any> = new EventEmitter<any>(); MFESaveClick(response){ this.saveRecord.emit(response); }

¿Cómo agregar Event Listener en la aplicación Shell para MFES Events?

Por favor, hágamelo saber si se requiere algún otro detalle.

por favor avise.

Gracias.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No estoy seguro de la solución exacta, pero creo que hay una manera de usar los componentes web Input/Output @angular-architects/module-federation-tools como carga directa de un componente web a través de la mención de federación de módulos aquí en los documentos.

En la aplicación de shell, se crea un componente personalizado y se enruta a la ruta mediante las importaciones ModuleFederationToolsModule .

 const routes: Routes = [ { path:'angular14', component: CustomerComponent }, { path:'**',component:NotFoundComponent } ]; @NgModule({ declarations: [ AppComponent, CustomerComponent, NotFoundComponent ], imports: [ BrowserModule, CommonModule, RouterModule.forRoot(routes), ModuleFederationToolsModule ], providers: [], bootstrap: [AppComponent], schemas:[] }) export class AppModule { }

Y luego en CustomerComponent usando el selector WebComponentWrapper .

por ejemplo

 <mft-wc-wrapper [options]="options" [props]="props" [events]="events"></mft-wc-wrapper>
 import { WebComponentWrapper, WebComponentWrapperOptions } from '@angular-architects/module-federation-tools'; import { Component } from '@angular/core'; @Component({ selector: 'app-customer', templateUrl: './customer.component.html' }) export class CustomerComponent { title = 'CustomerComponent'; props = { "message": "Hello from Shell" } events = { "saveRecord": (event:any) => { console.debug('saveRecord!', event); } } options: WebComponentWrapperOptions = { type:'module', remoteEntry: 'http://localhost:4201/remoteEntry.js', exposedModule: './web-components', elementName: 'angular14-customer' }; }

Y la aplicación remota puede usar accesorios y eventos como este.

 <!--MFEComponent--> remote app! <button (click)="MFESaveClick($event)">click me !</button>
 //MFEComponent @Output() saveRecord: EventEmitter<any> = new EventEmitter<any>(); @Input() message:any; MFESaveClick(response){ this.saveRecord.emit(response); }

No probado, pero espero que esto ayude.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda