Как разделить модуль между родительским и дочерним модулями в Angular - PullRequest
0 голосов
/ 11 июня 2019

Я новичок в Angular. Я хочу использовать компонент (FuncionariosAlteraSenhaComponent) с маршрутизацией и с диалогом. Однако я не могу импортировать компонент в разные модули.

Я создал shared.module для импорта FuncionariosAlteraSenhaComponent, который будет использоваться в других модулях. Этими двумя модулями являются AppLogged.module и Funcionarios.module. AppLogged.module является родителем Funcionarios.module.

Shared.module

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FuncionariosAlteraSenhaComponent } from '../features/funcionarios/funcionarios-altera-senha/funcionarios-altera-senha.component';


@NgModule({
  entryComponents:[
    FuncionariosAlteraSenhaComponent],

  declarations: [
    FuncionariosAlteraSenhaComponent
  ],
  imports: [
    CommonModule
  ],
  exports:[
    FuncionariosAlteraSenhaComponent
  ]
})

export class SharedModule { }

AppLogged.module

@NgModule({

  entryComponents: [AppLogedComponent, PesquisaColaboradorComponent, EfetuarPagamentoComponent,
  PesquisaClienteComponent, PesquisaPedidoComponent, CotacaoVendaComponent, CadastroVeiculoComponent,
  PesquisaVeiculoComponent, CompraComponent, CadastroClienteComponent, SolicitarTransferenciaComponent,
  SaidaTransferenciaComponent, ConfirmarRecebimentoComponent, PesquisaEstoqueComponent,TextoLivreComponent,
  DetalheRecebimentoComponent, PesquisaPedCompraTransfComponent,  EfetuarPagamentosComponent],

  imports: [
    CommonModule,
    MatRadioModule,
    RouterModule,
    HttpClientModule,
    ReactiveFormsModule,
    FormsModule,
    MatFormFieldModule,
    MatInputModule,
    MatTabsModule,
    MatPaginatorModule,
    MatTableModule,
    MatSortModule,
    MatButtonModule,
    MatCheckboxModule,
    MatDatepickerModule,
    MatNativeDateModule,
    MatExpansionModule,
    MatOptionModule,
    MatSelectModule,
    LayoutModule,
    MatToolbarModule,
    MatSidenavModule,
    MatIconModule,
    MatListModule,
    MatAutocompleteModule,
    AppLogedRoutingModule,
    MatDialogModule,
    MatMenuModule,
    NgxCurrencyModule,
    NgxMaskModule.forRoot(),
  ],


  declarations: [AppLogedComponent, MenuSideComponent, HeaderComponent, PesquisaColaboradorComponent,
  EfetuarPagamentoComponent, PesquisaClienteComponent, PesquisaPedidoComponent, CotacaoVendaComponent,
  CadastroVeiculoComponent, PesquisaVeiculoComponent,CompraComponent,CadastroClienteComponent,
  SolicitarTransferenciaComponent, SaidaTransferenciaComponent, ConfirmarRecebimentoComponent,
  PesquisaEstoqueComponent,TextoLivreComponent, DetalheRecebimentoComponent, PesquisaPedCompraTransfComponent,  EfetuarPagamentosComponent],

  exports: [AppLogedComponent],
})

export class AppLogedModule { }
Funcionarios.module

@NgModule({
  entryComponents: [FuncionariosComponent, ],
  declarations: [FuncionariosComponent, ],
  bootstrap: [FuncionariosComponent, ],
  exports: [ FuncionariosComponent,  ],
  imports: [
    CommonModule,
    ReactiveFormsModule,
    NgxMaskModule,
    FormsModule,
    RouterModule,
    MatFormFieldModule,
    MatInputModule,
    MatPaginatorModule,
    MatTableModule,
    MatSortModule,
    MatButtonModule,
    MatCheckboxModule,
    MatDatepickerModule,
    MatNativeDateModule,
    MatExpansionModule,
    MatOptionModule,
    MatSelectModule,
    MatDialogModule,
    MatRadioModule,
    MatCardModule,
    FuncionariosRoutingModule,
    MatAutocompleteModule,
    SharedModule ],
})
export class FuncionariosModule { }

1 Ответ

0 голосов
/ 11 июня 2019

Вам необходимо добавить SharedModule к массиву imports как FuncionariosModule, так и AppLogedModule, чтобы иметь доступ к FuncionariosAlteraSenhaComponent.На данный момент вы только добавляете его в массив imports из FuncionariosModule.

Кроме того, ваши угловые модули очень тесно связаны с модулями угловых материалов.В идеале вы должны создать отдельный модуль для этого.Что-то вроде AppMaterialModule, которое добавит все используемые вами модули угловых материалов к массиву imports и exports.

После этого вы сможете получить доступ к этим модулям материалов,просто добавив модуль AppMaterialModule в массив imports вашего модуля.Это поможет сделать ваш код более управляемым.

PS: Кроме того, вы уверены, что хотите добавить все эти компоненты в массив entryComponents в вашем AppLogedModule?

...