угловой модуль 6 ленивая загрузка пут - PullRequest
0 голосов
/ 19 сентября 2018

У меня проблема с использованием функциональных модулей с маршрутизацией и загрузкой дочерних маршрутов в основную программу маршрутизации.

По какой-то причине, когда я щелкаю ссылку на намеченный маршрут, он фактически загружает компонент из совершенно другого модуля.Я читал, что «пустые» маршруты могут вызвать это, и пробовал бесчисленное количество решений без удачи.

Вот мой код.

app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { FormsModule } from '@angular/forms'
import { CKEditorModule } from 'ngx-ckeditor'
import { CommonModule } from '@angular/common';
import { HttpClientModule } from '@angular/common/http';
import { AttestationService } from './services/attestation.service';
import { AttestationRepository } from './repositories/attestation.repository';
import { AuthorService } from './services/author.service';
import { AuthorRepository } from './repositories/author.repository';
import { UserService } from './services/user.service';
import { UserRepository } from './repositories/user.repository';
import { DocumentService } from './services/document.service';
import { DocumentRepository } from './repositories/document.repository';
import { QuestionnaireService } from './services/questionnaire.service';
import { QuestionnaireRepository } from './repositories/questionnaire.repository';
import { ParameterService } from './services/parameter.service';
import { CompanyService } from './services/company.service';
import { CompanyRepository } from './repositories/company.repository';
import { AttestationsModule } from './attestations/attestations.module';
import { AppRoutingModule } from './/app-routing.module';
import { UiModule } from './ui/ui.module';
import { AuthorsModule } from './authors/authors.module';
import { HomeModule } from './home/home.module';
import { CompaniesModule } from './companies/companies.module';
import { DocumentsModule } from './documents/documents.module';
import { HistoryModule } from './history/history.module';
import { QuestionnairesModule } from './questionnaires/questionnaires.module';
import { PipesModule } from './pipes/pipes.module';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    AppRoutingModule,
    AttestationsModule,
    AuthorsModule,
    BrowserModule,
    CKEditorModule,
    CommonModule,
    CompaniesModule,
    DocumentsModule,
    FormsModule,
    HistoryModule,
    HomeModule,
    HttpClientModule,
    PipesModule,
    QuestionnairesModule,
    UiModule
  ],
  providers: [
    AttestationService,
    AttestationRepository,
    AuthorService,
    AuthorRepository,
    UserService,
    UserRepository,
    DocumentService,
    DocumentRepository,
    QuestionnaireService,
    QuestionnaireRepository,
    ParameterService,
    CompanyService,
    CompanyRepository
  ],
  bootstrap: [AppComponent]
})

export class AppModule { }

app-routing.module.ts

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

const appRoutes: Routes = [
  { path: '', redirectTo: 'home', pathMatch: 'full' },
  { path: 'home', loadChildren: './home/home.module#HomeModule' },
  { path: 'documents', loadChildren: './documents/documents.module#DocumentsModule' },
  { path: 'authors', loadChildren: './authors/authors.module#AuthorsModule' },
  { path: 'attestations', loadChildren: './attestations/attestations.module#AttestationsModule' },
  { path: '**', redirectTo: 'home' }
];

@NgModule({
  imports: [
    RouterModule.forRoot(appRoutes)
  ],
  exports: [RouterModule]
})

export class AppRoutingModule { }

home.module.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { Ng2GoogleChartsModule } from 'ng2-google-charts';
import { HomeComponent } from './home/home.component';
import { Routes, RouterModule } from '@angular/router';
import { UiModule } from '../ui/ui.module';

const homeRoutes: Routes = [
  { path: '', component: HomeComponent }
];

@NgModule({
  imports: [
    RouterModule.forChild(homeRoutes),
    CommonModule,
    UiModule,
    Ng2GoogleChartsModule
  ],
  declarations: [HomeComponent]
})
export class HomeModule { }

documents.module.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { DocumentsComponent } from './documents/documents.component';
import { DocumentDetailsComponent } from './document-details/document-details.component';
import { RouterModule, Routes } from '@angular/router';
import { HistoryModule } from '../history/history.module';
import { AuthorsModule } from '../authors/authors.module';
import { PipesModule } from '../pipes/pipes.module';
import { AttestationsModule } from '../attestations/attestations.module';
import { UiModule } from '../ui/ui.module';


const documentRoutes: Routes = [
  { path: '', component: DocumentsComponent },
  { path: 'details/:id', component: DocumentDetailsComponent }
];

@NgModule({
  imports: [
    RouterModule.forChild(documentRoutes),
    CommonModule,
    RouterModule,
    HistoryModule,
    AuthorsModule,
    PipesModule,
    AttestationsModule,
    UiModule
  ],
  declarations: [DocumentsComponent, DocumentDetailsComponent]
})

export class DocumentsModule { }

author.module.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AuthorsComponent } from './authors/authors.component';
import { AuthorDetailsComponent } from './author-details/author-details.component';
import { DocumentAuthorsComponent } from './document-authors/document-authors.component';
import { RouterModule, Routes } from '@angular/router';

const authorRoutes: Routes = [
  { path: '', component: AuthorsComponent },
  { path: 'details/:id', component: AuthorDetailsComponent }
];

@NgModule({
  imports: [
    RouterModule.forChild(authorRoutes),
    CommonModule,
    RouterModule
  ],
  declarations: [AuthorDetailsComponent, AuthorsComponent, DocumentAuthorsComponent],
  exports: [DocumentAuthorsComponent]
})

export class AuthorsModule { }

attestations.module.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AttestComponent } from './attest/attest.component';
import { AttestationsComponent } from './attestations/attestations.component';
import { Routes, RouterModule } from '@angular/router';

const routes: Routes = [
  { path: '', component: AttestationsComponent },
  { path: 'attest/:id', component: AttestComponent }
];

@NgModule({
  imports: [
    RouterModule.forChild(routes),
    CommonModule
  ],
  declarations: [AttestComponent, AttestationsComponent],
  exports: [AttestationsComponent]
})
export class AttestationsModule { }

И МЕНЮ HTML

<nav>
  <ul [class.open]="isOpen" (click)="isOpen=false">
    <li [routerLinkActive]="['link-active']">
      <a [routerLink]="['/home']">Home</a>
    </li>
    <li [routerLinkActive]="['link-active']">
      <a [routerLink]="['/documents']">Documents</a>
    </li>
    <li [routerLinkActive]="['link-active']">
      <a [routerLink]="['/authors']">Authors</a>
    </li>
    <li [routerLinkActive]="['link-active']">
      <a [routerLink]="['/attestations']">Attestations</a>
    </li>
    <li class="user">
      <user-greeting></user-greeting>
    </li>
  </ul>
  <a class="menu" (click)="isOpen = !isOpen"><i class="fa fa-bars"></i></a>
</nav>

Когда я нажимаю на ссылку «документы» в навигационной панели, я перехожу на этот URL в браузере, однако компонент «авторы» фактически загружается вscreen.

Когда я нажимаю на ссылку "авторы" в навигационной панели, я перехожу на этот URL в браузере и загружаю правильный компонент AUTHORS.

Когда я нажимаю нассылка для «аттестации» в навигационной системе, она выводит меня на этот URL в браузере, а также загружает правильный компонент «аттестации».

Я застрял.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...