ОШИБКА Ошибка: Uncaught (в обещании), не может найти ни одного маршрута.Сегмент URL - PullRequest
0 голосов
/ 26 августа 2018

У меня есть простая навигация в приложении angular 6,

Вот HTML

<nav class="main-nav>
<ul class="main-nav__list " ng-sticky [addClass]="'main-sticky-link'" [ngClass]="ref.click === true? 'Navbar__ToggleShow' :''">
            <li class="main-nav__item">
              <a class="main-nav__link" routerLink="['/']" routerLinkActive="active">Home</a>
            </li>
            <li class="main-nav__item"> 
              <a class="main-nav__link" routerLink="['/about']" routerLinkActive="active">About us</a>
            </li>

          </ul>
</nav>

вот модуль app.routing

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule, Routes } from '@angular/router';
import { MainLayoutComponent } from './layout/main-layout/main-layout.component';
import { AboutComponent } from './components/about/about.component';
import { WhatwedoComponent } from './components/whatwedo/whatwedo.component';
import { FooterComponent } from './components/footer/footer.component';
import { ProjectsComponent } from './components/projects/projects.component';
const routes: Routes = [
  { path: 'about', component: AboutComponent },
  { path: 'what', component: WhatwedoComponent },
  { path: 'contacts', component: FooterComponent },
  { path: 'projects', component: ProjectsComponent},
];

@NgModule({
  imports: [
    CommonModule,
    RouterModule.forRoot(routes),
  ],
  declarations: []
})
export class AppRoutingModule { }

Вот модуль приложения

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { NgStickyDirective } from 'ng-sticky';
import { RouterModule } from '@angular/router';
import { AppComponent } from './app.component';
import { MainLayoutComponent } from './layout/main-layout/main-layout.component';
import { AppRoutingModule } from './/app-routing.module';
import { MainNavDirective } from './layout/main-nav.directive';
import { AboutComponent } from './components/about/about.component';
import { WhatwedoComponent } from './components/whatwedo/whatwedo.component';
import { FooterComponent } from './components/footer/footer.component';
import { WhyChooseUsComponent } from './components/why-choose-us/why-choose-us.component';
import { TeamComponent } from './components/team/team.component';
import { ProjectsComponent } from './components/projects/projects.component';
import { ClientsComponent } from './components/clients/clients.component';
import { HowItWorksComponent } from './components/how-it-works/how-it-works.component';
import { PartnersComponent } from './components/partners/partners.component';

@NgModule({
  declarations: [
    AppComponent,
    NgStickyDirective,
    MainLayoutComponent,
    MainNavDirective,
    AboutComponent,
    WhatwedoComponent,
    FooterComponent,
    WhyChooseUsComponent,
    TeamComponent,
    ProjectsComponent,
    ClientsComponent,
    HowItWorksComponent,
    PartnersComponent
  ],
  imports: [
    BrowserModule,
    RouterModule,
    AppRoutingModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

когда я запускаю свое приложение и щелкаю о нас, я получаю следующую ошибку:

core.js:1673 ERROR Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: '%5B'/about'%5D'
Error: Cannot match any routes. URL Segment: '%5B'/about'%5D'
    at

Я пробовал другую комбинацию, чтобы решить проблему, но все еще не смог избавиться от этогоошибка,

что я делаю не так в своем коде?любая помощь будет полезна, спасибо

Ответы [ 3 ]

0 голосов
/ 26 августа 2018

Поскольку ошибка говорит, что ваша ссылка маршрутизатора должна соответствовать существующим настроенным маршрутам

Это должно быть просто routerLink="/about "

0 голосов
/ 07 февраля 2019

В случае, если вам нужен синтаксис [], полезный для " редактирования форм ", когда вам нужно передать параметры типа id с маршрутом, вы должны сделать что-то вроде:

[routerLink]="['edit', business._id]"

Что касается " о странице " без таких параметров, как ваш,

[routerLink]="/about"

или

[routerLink]=['about']

подойдет.

0 голосов
/ 26 августа 2018

Когда вы используете routerLink, как это, вам нужно установить значение маршрута, по которому он должен идти.Но когда вы используете routerLink с синтаксисом привязки свойств, например: [routerLink], тогда ему должно быть присвоено имя свойства, значением которого будет маршрут, к которому он должен перейти пользователь.

чтобы исправить вашу проблему, замените это routerLink="['/about']" на routerLink="/about" в своем HTML.

В других местах вы использовали синтаксис привязки свойств, когда это действительно не требовалось.Я исправил это, и вы можете просто использовать синтаксис шаблона ниже:

<nav class="main-nav>
  <ul 
    class="main-nav__list" 
    ng-sticky 
    addClass="main-sticky-link" 
    [ngClass]="ref.click ? 'Navbar__ToggleShow' : ''">
    <li class="main-nav__item" routerLinkActive="active">
      <a class="main-nav__link" routerLink="/">Home</a>
    </li>
    <li class="main-nav__item" routerLinkActive="active"> 
      <a class="main-nav__link" routerLink="/about">About us</a>
    </li>
  </ul>
</nav>

Также необходимо знать, куда именно он должен загрузить шаблон для Компонента, соответствующего маршруту, по которому он достиг.Поэтому для этого не забудьте добавить <router-outlet></router-outlet>, либо в ваш шаблон, представленный выше, либо в родительский компонент.

Есть еще одна проблема с вашим AppRoutingModule.Вам нужно экспортировать RouterModule оттуда, чтобы он был доступен вашему AppModule при его импорте.Чтобы это исправить, экспортируйте его из AppRoutingModule, добавив его в массив exports.

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule, Routes } from '@angular/router';
import { MainLayoutComponent } from './layout/main-layout/main-layout.component';
import { AboutComponent } from './components/about/about.component';
import { WhatwedoComponent } from './components/whatwedo/whatwedo.component';
import { FooterComponent } from './components/footer/footer.component';
import { ProjectsComponent } from './components/projects/projects.component';
const routes: Routes = [
  { path: 'about', component: AboutComponent },
  { path: 'what', component: WhatwedoComponent },
  { path: 'contacts', component: FooterComponent },
  { path: 'projects', component: ProjectsComponent},
];

@NgModule({
  imports: [
    CommonModule,
    RouterModule.forRoot(routes),
  ],
  exports: [RouterModule],
  declarations: []
})
export class AppRoutingModule { }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...