Angular 8 — дочерняя маршрутизирующая ссылка не работает

#angular #routes #angular-ui-router #routerlink

#angular #маршруты #angular-ui-router #routerlink

Вопрос:

Я хочу переходить с одной страницы на другую, от одного компонента к другому:

 const routes: Routes = [
  {
    path: '',
    component: UploadPageComponent,
    children: [
      {
        path: 'frameworks',
        component: FrameworksSceneComponent,
        pathMatch: 'full',
        children: [
          {//doesn't work
            path: 'questionnaire',
            component: QuestionnaireComponent,
          },
        ],
      },
      {
        path: 'documents',
        component: DocumentsSceneComponent,
        pathMatch: 'full',
      },
      {//works
        path: 'questionnaire',
        component: QuestionnaireComponent,
        pathMatch: 'full',
      },
    ],
  },
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule],
})
export class UploadRoutingModule {
}
  

Мой шаблон (FrameworksSceneComponent):

  <a [routerLink]="['questionnaire']">aaaaaaaaaaaaaaaaaaaa</a>
  

но это работает (FrameworksSceneComponent):

 <a [routerLink]="['/private/upload/questionnaire']">bbbbbbbbbbbbbbbbbbbbbbbbbbbbb</a>
  

Что не так с моими вложенными ссылками? Почему после нажатия aaaaaaaaaaaaaaaaaa я перенаправляюсь на свою главную страницу. С другой стороны, ссылка bbbbbbbbbbbbbbbb работает, но в этом случае ссылка не является дочерней ссылкой.

Комментарии:

1. <a [routerLink]=»[‘questionnaire’]»> ааааааааааааааааааа</a> вы вызываете это по / framwork route ?

2. Да, я вызываю ааааааааааааааа в компоненте FrameworksSceneComponent (в шаблоне)… Я отредактировал свой пост, добавив FrameworksSceneComponent в качестве компонента, из которого я хочу перейти к QuestionnaireComponent

Ответ №1:

То, как вы реализовали вложенный маршрут, angular ищет a <router-outlet> в вашем FrameworksSceneComponent.html . попробуйте реализовать, как показано ниже. не уверен, почему он переходит на главную страницу.

   routes: Routes = [
    {
      path: "",
      children: [
        {
          path: "",
          component: UploadPageComponent
        },
        {
          path: "frameworks",
          children: [
            {
              path: "",
              component: FrameworksSceneComponent,
              pathMatch: "full"
            },
            {
              //should  work
              path: "questionnaire",
              component: QuestionnaireComponent
            }
          ]
        },
        {
          path: "documents",
          component: DocumentsSceneComponent,
          pathMatch: "full"
        },
        {
          //works
          path: "questionnaire",
          component: QuestionnaireComponent,
          pathMatch: "full"
        }
      ]
    }
  ];
  

Комментарии:

1. Хм, у меня есть структура меню, подобная upload -> затем 2 вложенные вкладки / 2 подменю: Документы и фреймворки. И в рамках Framework я хотел бы иметь дополнительную страницу анкеты со ссылкой upload / frameworks / questionnaire