У меня есть приложение Angular 2.0.0, созданное с помощью angular-cli.
Когда я создаю компонент и добавляю его в AppModule
массив объявлений, все хорошо, все работает.
Я решил разделить компоненты, поэтому создал TaskModule
и компонент TaskCard
. Теперь я хочу использовать TaskCard
один из компонентов AppModule
( Board
компонент).
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{}
Весь проект доступен по адресу https://github.com/evgdim/angular2 (папка kanban-board)
Чего мне не хватает? Что я должен сделать, чтобы использовать TaskCardComponent
в BoardComponent
?
источник
Вы должны
export
это из вашегоNgModule
:источник
(Угловой 2 - Угловой 7)
Компонент может быть объявлен только в одном модуле. Чтобы использовать компонент из другого модуля, вам нужно выполнить две простые задачи:
1-й модуль:
Имеем компонент (назовем его «ImportantCopmonent»), который мы хотим повторно использовать на странице 2-го модуля.
2-й модуль:
Повторно использует «ImportantCopmonent», импортируя FirstPageModule
источник
Обратите внимание, что для создания так называемого «функционального модуля» вам необходимо выполнить импорт
CommonModule
внутри него. Итак, код инициализации вашего модуля будет выглядеть так:Более подробная информация доступна здесь: https://angular.io/guide/ngmodule#create-the-feature-module
источник
Все, что вы хотите использовать из другого модуля, просто поместите это в массив экспорта . Как это-
источник
Один большой и отличный подход заключается в загрузке модуля из a
NgModuleFactory
, вы можете загрузить модуль внутри другого модуля, вызвав это:Я получил это отсюда .
источник
РЕШЕНО, КАК ИСПОЛЬЗОВАТЬ КОМПОНЕНТ, ЗАЯВЛЕННЫЙ В МОДУЛЕ В ДРУГОМ МОДУЛЕ.
Основано на объяснении Ройи Намира (Большое спасибо). Отсутствует часть для повторного использования компонента, объявленного в модуле, в любом другом модуле, пока используется отложенная загрузка.
1-й: экспортировать компонент в модуль, который содержит его:
2-й: в модуле, где вы хотите использовать TaskCardComponent:
Таким образом, второй модуль импортирует первый модуль, который импортирует и экспортирует компонент.
Когда мы импортируем модуль во второй модуль, нам нужно экспортировать его снова. Теперь мы можем использовать первый компонент во втором модуле.
источник