Eu tenho o aplicativo Angular 2.0.0 gerado com angular-cli.
Quando crio um componente e o adiciono à AppModule
matriz de declarações, tudo fica bem, funciona.
Decidi separar os componentes, então criei um TaskModule
e um componente TaskCard
. Agora eu quero usar o TaskCard
em um dos componentes do AppModule
(o 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 o projeto está disponível em https://github.com/evgdim/angular2 (pasta kanban-board)
o que estou perdendo? O que eu tenho que fazer para uso TaskCardComponent
em BoardComponent
?
fonte
Você precisa
export
disso do seuNgModule
:fonte
(Angular 2 - Angular 7)
O componente pode ser declarado apenas em um único módulo. Para usar um componente de outro módulo, você precisa executar duas tarefas simples:
1º módulo:
Tenha um componente (vamos chamá-lo: "ImportantCopmonent"), queremos reutilizar na página do 2º módulo.
2º Módulo:
Reutiliza o "ImportantCopmonent", importando o FirstPageModule
fonte
Observe que, para criar o chamado "módulo de recurso", você precisa importar
CommonModule
dentro dele. Portanto, seu código de inicialização do módulo será semelhante a este:Mais informações disponíveis aqui: https://angular.io/guide/ngmodule#create-the-feature-module
fonte
Tudo o que você deseja usar de outro módulo, basta colocá-lo na matriz de exportação . Como isso-
fonte
Uma abordagem grande e ótima é carregar o módulo de a
NgModuleFactory
, você pode carregar um módulo dentro de outro módulo chamando isto:Eu peguei isso daqui .
fonte
RESOLVIDO COMO USAR UM COMPONENTE DECLARADO EM UM MÓDULO EM OUTRO MÓDULO.
Baseado na explicação de Royi Namir (Muito obrigado). Há uma peça que falta para reutilizar um componente declarado em um módulo em qualquer outro módulo enquanto o carregamento lento é usado.
1º: exporte o componente no módulo que o contém:
2º: No módulo em que você deseja usar o TaskCardComponent:
Assim, o segundo módulo importa o primeiro módulo que importa e exporta o componente.
Quando importamos o módulo no segundo módulo, precisamos exportá-lo novamente. Agora podemos usar o primeiro componente no segundo módulo.
fonte