Angular 2 组件未导航到另一个组件

标签 angular electron angular2-routing

我是 Angular 的新手,在 Electron 中设计了一个跨平台的桌面考试应用程序。提交考试时,组件不会导航到结果组件,但是当我单击 View 上的其他位置时,它会导航到另一个组件。

这是我的提交代码:

 submit() {
    try {
        if(this.sub != null){
            this.sub.unsubscribe();
        }

        this._dataService.examConfigurationModel = this.examConfigurationModel;
        this._router.navigate(['resultpanel']);
        alert('Navigation performed');
    }
    catch (Error) {
        console.log(JSON.stringify(Error.message))
        alert(Error.message);
    }


}

在这里我有我的 App.routes
    import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { HomeComponent } from './components/home.component';
import { LoginComponent } from './components/auth/login.component';
import { VerifyComponent } from './components/auth/verify.component';
import { RegisterComponent } from './components/auth/register.component';
import { LanguageComponent } from './components/preference/language.component';
import { QualificationComponent } from './components/preference/qualification.component';
import { CategoriesComponent } from './components/preference/categories.component';
import { NewsComponent } from './components/news/news.component';
import { ExamComponent } from './components/exam/exam.component';
import { ExamCategoryComponent } from './components/exam/exam_category.component';
import { BookHomeComponent } from './components/book/home.component';
import { BookBaseComponent } from './components/book/base.component';
import { BookCategoryComponent } from './components/book/book_category.component';
import { JobComponent } from './components/job/job.component';
import { DetailsComponent } from './components/book/details.component'
import { BookPdfComponent } from './components/book/pdf.component'
import { ExamBaseComponent } from './components/exam/base.component'
import { MyExamComponent } from './components/exam/my_exam.component'
import { ExamDetailsComponent } from './components/exam/details.component'
import { resultComponent } from './components/exam/result.component'
import { ResultDetailComponent } from './components/exam/result_detail.component'
import { topfreeComponent } from './components/exam/topfree.component'
import { ExamPanelComponent } from './components/exam/exampanel.component'
import { ResultPanelComponent } from './components/exam/resultpanel.component'
import { JobDetailssComponent } from './components/job/details.component'
import { JobBaseComponent } from './components/job/base.component';
import { SavedJobs } from './components/job/savedjob.component';
import { SavedJobDetails } from './components/job/savedjob.details.component';
import { SuggestedComponent } from './components/book/suggested.component';
import { BookLanguageComponent } from './components/book/languagebook.component';
import { MyInstitutes } from './components/preference/myinstitutes.component';
import { forgetComponent } from './components/auth/forgetPass.component'
import { ExplanationPanel } from './components/exam/explanationpanel.component'
import { savePreference } from './components/auth/savePreference.component'


const routes: Routes = [
  { path: '', redirectTo: 'login', pathMatch: 'full' },
  { path: 'login', component: LoginComponent },
  { path: 'verify', component: VerifyComponent },
  { path: 'register', component: RegisterComponent },
  { path: 'forgetpassword', component: forgetComponent },
  { path: 'readBook', component: BookPdfComponent },
  { path: 'exampanel', component: ExamPanelComponent },
  { path: 'resultpanel', component: ResultPanelComponent },
  { path: 'explanationpanel', component: ExplanationPanel },
  {
    path: 'home', component: HomeComponent, children: [
      { path: '', redirectTo: 'news', pathMatch: 'full' },
      { path: 'language', component: LanguageComponent },
      { path: 'qualification', component: QualificationComponent },
      { path: 'categories', component: CategoriesComponent },
      { path: 'myinstitutes', component: MyInstitutes },
      { path: 'savepreferences', component: savePreference },
      { path: 'news', component: NewsComponent },
      {
        path: 'book', component: BookBaseComponent, children: [
          { path: '', redirectTo: 'home', pathMatch: 'full' },
          {
            path: 'home', component: BookHomeComponent, children: [
              { path: '', redirectTo: 'suggestedBooks', pathMatch: 'full' },
              {
                path: 'suggestedBooks', component: SuggestedComponent, children: [
                  { path: 'details', component: DetailsComponent }
                ]
              },
              {
                path: 'languagesBooks', component: BookLanguageComponent, children: [
                  { path: 'detailsofbook', component: DetailsComponent }
                ]
              }
            ]
          },
          {
            path: 'bookmore', component: BookCategoryComponent, children: [
              { path: 'details', component: DetailsComponent }
            ]
          }
        ]
      },
      {
        path: 'exam', component: ExamBaseComponent, children: [
          { path: '', redirectTo: 'suggested', pathMatch: 'full' },
          {
            path: 'suggested', component: ExamComponent, children: [
              { path: 'examDetails', component: ExamDetailsComponent }
            ]
          },
          {
            path: 'myexams', component: MyExamComponent, children: [
              { path: 'examDetailsMyExams', component: ExamDetailsComponent }
            ]
          },
          {
            path: 'myResult', component: resultComponent, children: [{
              path: 'resultDetail', component: ResultDetailComponent
            }
            ]
          },
          {
            path: 'topFree', component: topfreeComponent, children: [
              { path: 'topFreeDetails', component: ExamDetailsComponent }
            ]
          },
          { path: 'moreExams', component: ExamCategoryComponent }
        ]
      },
      {
        path: 'job', component: JobBaseComponent, children: [
          { path: '', redirectTo: 'jobhome', pathMatch: 'full' },

          {
            path: 'jobhome', component: JobComponent, children: [
              { path: 'jobdetails', component: JobDetailssComponent }
            ]
          },
          {
            path: 'savedjobs', component: SavedJobs,
            children: [
              { path: 'savejobdetails', component: SavedJobDetails }
            ]
          }
        ]
      }
    ]
  },

];

@NgModule({
  imports: [
    RouterModule.forRoot(routes, { useHash: true })
  ],
  exports: [
    RouterModule
  ]
})
export class AppRoutingModule { }
export const routingComponenets = [LoginComponent,
  HomeComponent,
  VerifyComponent,
  RegisterComponent,
  LanguageComponent,
  QualificationComponent,
  CategoriesComponent,
  NewsComponent,
  ExamComponent,
  ExamCategoryComponent,
  BookHomeComponent,
  BookBaseComponent,
  BookCategoryComponent,
  DetailsComponent,
  JobComponent,
  BookPdfComponent,
  ExamBaseComponent,
  MyExamComponent,
  ExamDetailsComponent,
  resultComponent,
  ResultDetailComponent,
  topfreeComponent,
  ExamPanelComponent,
  ResultPanelComponent,
  JobBaseComponent,
  JobDetailssComponent,
  SavedJobs,
  SavedJobDetails,
  SuggestedComponent,
  BookLanguageComponent,
  MyInstitutes,
  forgetComponent,
  ExplanationPanel,
  savePreference]

和 App.ts
    import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
/*
 * Angular Modules
 */
import { enableProdMode, NgModule, Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { LocationStrategy, HashLocationStrategy } from '@angular/common';
import { RouterModule, Router } from '@angular/router';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';

import { AppComponent } from './components/app.component';
import { SearchFilterPipe } from './pipes/SearchFilterPipe'
import { FileSizePipe } from './pipes/FileSizePipe'

import { AppRoutingModule, routingComponenets } from './app.routes';

import { PdfViewerComponent } from 'ng2-pdf-viewer';

import{PdfViewerServices} from './services/pdfViewer'

import{DataService} from './services/data.service';
import { ChartsModule } from 'ng2-charts/ng2-charts';
import Chart from 'chart.js';

@NgModule({
    imports: [
        BrowserModule,
        FormsModule,
        ReactiveFormsModule,
        HttpModule,
        BrowserAnimationsModule,
        AppRoutingModule,
        ChartsModule 
    ],
    declarations: [
        SearchFilterPipe,
        FileSizePipe,
        AppComponent,
        routingComponenets,
        PdfViewerComponent],
    bootstrap: [AppComponent],
    schemas: [
        CUSTOM_ELEMENTS_SCHEMA
    ],
    providers:[PdfViewerServices,DataService]
})
export class AppModule { }
platformBrowserDynamic().bootstrapModule(AppModule);

最佳答案

this._router.navigate(['resultpanel']);

需要像:
this._router.navigate(['/resultpanel']);

请注意上面示例中的前导斜杠。

关于Angular 2 组件未导航到另一个组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47864754/

相关文章:

javascript - Angular:触发间隔观察

html - 覆盖 PrimeNG 组件 CSS

angular - 如何在 angular-google-maps 中以编程方式打开/关闭时髦的信息窗口?

windows - 找出 Electron builder 之后当前正在运行的 build 目标

Angular 2 RC1 路由器在没有任何 routerLInk 的情况下无法工作

javascript - 设置 routerLink 参数 url 的格式

Angular 2. Keyup 事件未从输入触发

javascript - net.request 发布数据不工作

javascript - JS 返回值给出 "undefined"

javascript - 在 Angular 2 中动态显示/隐藏菜单栏