Tengo la aplicación Angular 2.0.0 generada con angular-cli.
Cuando creo un componente y lo agrego a AppModule
la matriz de declaraciones, todo está bien, funciona.
Decidí separar los componentes, así que creé un TaskModule
y un componente TaskCard
. Ahora quiero usar el TaskCard
en uno de los componentes de AppModule
(el Board
componente).
AppModule:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.component';
import { BoardComponent } from './board/board.component';
import { LoginComponent } from './login/login.component';
import { MdButtonModule } from '@angular2-material/button';
import { MdInputModule } from '@angular2-material/input';
import { MdToolbarModule } from '@angular2-material/toolbar';
import { routing, appRoutingProviders} from './app.routing';
import { PageNotFoundComponent } from './page-not-found/page-not-found.component';
import { UserService } from './services/user/user.service';
import { TaskModule } from './task/task.module';
@NgModule({
declarations: [
AppComponent,
BoardComponent,// I want to use TaskCard in this component
LoginComponent,
PageNotFoundComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
MdButtonModule,
MdInputModule,
MdToolbarModule,
routing,
TaskModule // TaskCard is in this module
],
providers: [UserService],
bootstrap: [AppComponent]
})
export class AppModule { }
TaskModule:
import { NgModule } from '@angular/core';
import { TaskCardComponent } from './task-card/task-card.component';
import { MdCardModule } from '@angular2-material/card';
@NgModule({
declarations: [TaskCardComponent],
imports: [MdCardModule],
providers: []
})
export class TaskModule{}
Todo el proyecto está disponible en https://github.com/evgdim/angular2 (carpeta kanban-board)
¿Qué me estoy perdiendo? ¿Qué tengo que hacer para su uso TaskCardComponent
en BoardComponent
?
fuente
Tienes que
export
hacerlo desde tuNgModule
:fuente
(Angular 2 - Angular 7)
El componente solo se puede declarar en un único módulo. Para utilizar un componente de otro módulo, debe realizar dos tareas simples:
1er módulo:
Tener un componente (llamémoslo: "ImportanteCopmonente"), queremos reutilizarlo en la página del segundo módulo.
2do módulo:
Reutiliza el "ImportanteCopmonente", importando el FirstPageModule
fuente
Tenga en cuenta que para crear un denominado "módulo de características", debe importar
CommonModule
dentro de él. Entonces, el código de inicialización de su módulo se verá así:Más información disponible aquí: https://angular.io/guide/ngmodule#create-the-feature-module
fuente
Lo que quiera usar de otro módulo, simplemente póngalo en la matriz de exportación . Me gusta esto-
fuente
Un enfoque grande y excelente es cargar el módulo desde a
NgModuleFactory
, puede cargar un módulo dentro de otro módulo llamando a esto:Tengo esto de aquí .
fuente
RESUELTO CÓMO USAR UN COMPONENTE DECLARADO EN UN MÓDULO EN OTRO MÓDULO.
Basado en la explicación de Royi Namir (Muchas gracias). Falta una parte para reutilizar un componente declarado en un Módulo en cualquier otro módulo mientras se usa la carga diferida.
Primero: Exportar el componente en el módulo que lo contiene:
2do: En el módulo donde desea usar TaskCardComponent:
De este modo, el segundo módulo importa el primer módulo que importa y exporta el componente.
Cuando importamos el módulo en el segundo módulo, necesitamos exportarlo nuevamente. Ahora podemos usar el primer componente en el segundo módulo.
fuente