通过函数获取错误进行路由 - Angular Bootstrap

Routing by a function Get Errors - Angular Bootstrap

我正在尝试在按钮点击功能发生时转到另一个页面。我在控制台中收到以下错误。

ERROR Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'create-new-structure'
Error: Cannot match any routes. URL Segment: 'create-new-structure'
    at ApplyRedirects.noMatchError (router.js:4396)
    at CatchSubscriber.selector (router.js:4360)
    at CatchSubscriber.error (catchError.js:29)
    at MapSubscriber._error (Subscriber.js:75)
    at MapSubscriber.error (Subscriber.js:55)
    at MapSubscriber._error (Subscriber.js:75)
    at MapSubscriber.error (Subscriber.js:55)
    at MapSubscriber._error (Subscriber.js:75)
    at MapSubscriber.error (Subscriber.js:55)
    at ThrowIfEmptySubscriber._error (Subscriber.js:75)
    at resolvePromise (zone-evergreen.js:798)
    at resolvePromise (zone-evergreen.js:750)
    at zone-evergreen.js:860
    at ZoneDelegate.invokeTask (zone-evergreen.js:399)
    at Object.onInvokeTask (core.js:41645)
    at ZoneDelegate.invokeTask (zone-evergreen.js:398)
    at Zone.runTask (zone-evergreen.js:167)
    at drainMicroTaskQueue (zone-evergreen.js:569)
    at ZoneTask.invokeTask [as invoke] (zone-evergreen.js:484)
    at invokeTask (zone-evergreen.js:1621)

以下是我的app-routing-modules.ts

import { StructureListComponent } from './fee-management-system/fees-structure/manage-structure/structure-list/structure-list.component';
import { CreateStructureComponent } from './fee-management-system/fees-structure/manage-structure/create-structure/create-structure.component';

import { from } from 'rxjs';

const routes: Routes = [
  { path: '', redirectTo: 'login', pathMatch: 'full' },

  {
    path: 'login',
    component: LoginComponent
  },
  {
    path: 'unauthorized-login',
    component: UnauthorizedLoginComponent
  },
  {
    path: 'portal',
    component: PortalComponent,
    children: [
      {
        path: '',
        component: HomeComponent,
      },

      {
        path: 'students-information',
        component: StudentsInformationComponent,
        children: [
          {
            path: 'sis-tabs',
            component: SisTabsComponent,
          },
        ]
      },
      {
        path: 'fee-management-system',
        component: FeeManagementSystemComponent,
        children: [
          {
            path: '',
            component: FeesStructureComponent,
            children: [
              {
                path: 'tab-grade01',
                component: TabGrade01Component,
              },
              {
                path: 'tab-scrolls',
                component: TabScrollsComponent
              },
            ]
          },
          {
            path: 'Structure-List',
            component: StructureListComponent
          },
          {
            path: 'create-new-structure',
            component: CreateStructureComponent
          },
          {
            path: 'create-fees-structure',
            component: CreateFeesStructureComponent
          },
          {
            path: 'fees-invoicing',
            component: FeesInvoicingComponent
          },
          {
            path: 'ad-hoc-exam',
            component: AdHocExamComponent
          },
          {
            path: 'scholarships',
            component: ScholarshipsComponent
          },
          {
            path: 'create-scholarship',
            component: CreateScholarshipComponent
          },
          {
            path: 'collection-report',
            component: CollectionReportComponent
          },
          {
            path: 'concession-list',
            component: ConcessionListComponent
          }
        ]
      },
      {
        path: 'student-search-result',
        component: StudentSearchResultsComponent
      },
      {
        path: 'upload-data',
        component: UploadComponent
      },
    ],
  },
];

HTML

<div class="row form-group">
                        <div class="col-4"></div>
                        <div class="col-2">
                            <button class="btn btn-danger" data-dismiss="modal">Cancel</button>                           
                        </div>
                        <div class="col-2">
                            <!-- <a [routerLink] = "['../create-new-structure']" class="btn btn-success" data-dismiss="modal" >Continue</a> -->
                            <button (click) = "checkPro()" class="btn btn-success" data-dismiss="modal" >Continue</button>
                        </div>
                        <div class="col-4"></div>
                    </div>

components.ts

 checkPro() {
  checkproceed = AccYear + FeeTyp;

  if (checkproceed == 2) {
    console.log(checkproceed);
    this.router.navigate(['../create-new-structure']);

  }
  else {
    alert("Please select Academic Year & Fee Type");
    
  };

 }

我真正想要的是当点击下面的按钮时,用户需要重定向到 create-new-structure 组件。

<button (click) = "checkPro()" class="btn btn-success" data-dismiss="modal" >Continue</button>

Thank in advance

我不知道它是否能解决您的问题,但您可以尝试使用 ActivatedRoute 并导航至当前路线。

constructor (private route: ActivatedRoute, private router: Router) {}

checkPro() {
  checkproceed = AccYear + FeeTyp;

  if (checkproceed == 2) {
    console.log(checkproceed);
    this.router.navigate(['../create-new-structure'], { relativeTo: this.route });
    // Or this.router.navigate(['create-new-structure'], { relativeTo: this.route });
  }
  else {
    ...
  };
 }

文档在这里:https://angular.io/api/router/UrlCreationOptions#relativeTo