Estoy cargando mis módulos con carga diferida. Estoy en una situación en la que necesito usar una forma de un módulo en otro módulo.
Por ejemplo, existe el módulo de producto y el módulo de marca. Ambos se cargan en carga diferida. Pero quería hacer posible que el usuario registrara las marcas dentro del formulario del producto. Pero mi pregunta es que ambos módulos se cargan con pereza.
¿Realmente necesito cargar completamente los dos módulos? ¿O podría simplemente cargar solo el componente requerido?
mi carga perezosa de carga:
const productRoutes: Routes = [ { path: 'product', loadChildren: 'app/admin/product/product.module#ProductModule', canLoad: [AuthGuard] } ]; const brandRoutes: Routes = [ { path: 'brand', loadChildren: 'app/admin/brand/brand.module#BrandModule', canLoad: [AuthGuard] } ];mi componente:
.... <div class="form-group"> <label for="exemplo">Create Name Product</label> <input type="text" name="name" [(ngModel)]="Product.name" #name="ngModel" > </div> <div class="form-group"> <label for="exemplo">Create Brand</label> <brand-form-component></brand-form-component> </div>EDITAR
Creé el módulo compartido:
import { NgModule } from '@angular/core'; import { FormComponent as FormBrandComponent } from '../../brand/brand-form/form.component' @NgModule({ imports: [ ], declarations: [ FormBrandComponent ], providers: [ FormBrandComponent ], exports: [ FormBrandComponent ], }) export class SharedModule { }Y lo importé en los otros módulos:
Módulo de marca
import { SharedModule }from '../shared/shared.module'; @NgModule({ imports: [ SharedModule, DialogModule, GrowlModule, Ng2PaginationModule, BrandRouting ], declarations: [ BrandComponent, ListComponent ], providers:[ BrandService ] }) export class BrandModule {}módulo de producto
import { SharedModule }from './shared/shared.module'; @NgModule({ imports: [ SharedModule, CurrencyMaskModule, DragulaModule, GrowlModule, DialogModule, Ng2PaginationModule, productRouting, ReactiveFormsModule ], declarations: [ ProductComponent, FormComponent, ListComponent ], providers:[ FormComponent, ProductService, BreadService, MarcaService, GradeService ] }) export class ProductModule { }Pero está dando el siguiente error:
La implementación actual de la carga diferida está en el nivel del módulo y es todo o nada. Si necesita compartir componentes entre los dos (que es lo que parece), entonces es posible que tenga un módulo compartido oculto que aún no haya identificado por completo. Por lo tanto, es muy posible que deba crear un nuevo módulo para albergar esos componentes/servicios compartidos y hacer que ese módulo se importe a los otros dos módulos con carga diferida.
Es su elección si ese nuevo módulo sería perezoso o cargado con entusiasmo, cualquiera de los dos funcionaría. (Dado que es una dependencia de los módulos del producto y de la marca, una vez que se carga cualquiera de ellos, también se cargará el nuevo módulo).