Angular Child Route не работает и перенаправляет меня на ту же страницу

Я пытался изменить свой route и пока не обнаружил никаких проблем. Но если вы обнаружите какие-либо недостатки, пожалуйста, дайте мне знать, также я пытаюсь найти любую ошибку типа и перепроверить свои компоненты, пока я не нашел ни одной, но затем снова дайте мне знать. Я пытаюсь ввести свой URL-адрес маршрута, и он работает, но отображает ту же страницу. Он не перенаправит меня на нужную страницу. Я даже удаляю и устанавливаю node module, но к сожалению проблема все та же. Честно говоря, я просто хочу попробовать, смогу ли я использовать child route в Angular 6. Но в любом случае я предоставлю вам модуль маршрута, мой html-компонент и другие мои компоненты.

Сначала мой модуль маршрута:

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

import { ContactComponent } from './contact/contact.component';
import { ComponentDetailComponent } from './contact/component-detail/component-detail.component';
import { ContactDescriptionComponent } from './contact/component-detail/contact-description/contact-description.component';

const routes: Routes = [

  {
    path: 'contact',
    component: ContactComponent,
    children: [
        {
            path: ':id',
            component: ComponentDetailComponent,
            children: [
                {
                    path: 'details/:name',
                    component: ContactDescriptionComponent
                }
            ]
        }
      ]
   },

];

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

Мой app.module.ts:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppRoutingModule } from './app-routing.module';

import { AppComponent } from './app.component';
import { ContactComponent } from './contact/contact.component';
import { ComponentDetailComponent } from './contact/component-detail/component-detail.component';
import { ContactDescriptionComponent } from './contact/component-detail/contact-description/contact-description.component';

@NgModule({
   declarations: [
     AppComponent,
     ContactComponent,
     ComponentDetailComponent,
     ContactDescriptionComponent
],
imports: [
     BrowserModule,
     AppRoutingModule
],
 providers: [],
 bootstrap: [AppComponent]
})
export class AppModule { }

Мой app.component.html:

<app-contact></app-contact>
<router-outlet></router-outlet>

Мой контакт.component.html:

<h1>Contact works!</h1>
<a [routerLink]="['id']">Contact Details</a>

Мой компонент-detail.component.html:

<h3>Component-detail Works!</h3>
<a [routerLink]="['details','name']" >Description</a>

И, наконец, мой контакт-description.component.html:

<h3>Contact-description Works!</h3>

Если у вас есть что-то, что вы хотели бы, чтобы я добавил, просто дайте мне знать.


person jricc russel    schedule 22.06.2018    source источник
comment
вы не предоставили никакого маршрутизатора в своем ComponentDetailComponent, поэтому angular не знает, где отображать вашего ребенка.   -  person JEY    schedule 22.06.2018
comment
@jriccrussel Вы пробовали предложенное решение? Вы также можете проверить демо.   -  person Amit Chigadani    schedule 23.06.2018
comment
@Amit Chigadani Спасибо за демонстрацию, но, к сожалению, она отображает пустую страницу.   -  person jricc russel    schedule 25.06.2018
comment
Вы проверили перенаправление на URL /contact/id/details/name ? Он просто отлично работает   -  person Amit Chigadani    schedule 25.06.2018
comment
Или просто перенаправьте на /contact/Id, а затем нажмите на ссылку описания.   -  person Amit Chigadani    schedule 25.06.2018
comment
@Amit Chigadani Извините, я не знал, что мне нужно ввести URL-адрес маршрута, я пытался скопировать ваш код в своей работе.   -  person jricc russel    schedule 25.06.2018
comment
@Amit Chigadani У меня есть вопрос, который я заметил в вашей демонстрации, что вы не вложили свои компоненты. Будет ли конфликт в маршруте, если я вложу свои компоненты? В моей ситуации я использую Child Route в своем приложении-маршрутизации, и я вложил свои компоненты, что вы думаете?   -  person jricc russel    schedule 25.06.2018
comment
Почему вы хотите вложить компоненты, когда для них определен отдельный routes, вы просто вложите router-outlet. Если вы хотите напрямую загрузить ContactDescription из компонента приложения (или корневого компа ContactComponent), вам нужно добавить его как дочерний маршрут к ContactComponent вместо того, чтобы добавлять его как дочерний   -  person Amit Chigadani    schedule 25.06.2018
comment
@ Амит Чигадани Понятно, я знаю, что прошу слишком многого. Если у вас есть время, не могли бы вы привести пример демонстрации для вложенного компонента дочернего маршрута, пожалуйста, очень признателен   -  person jricc russel    schedule 25.06.2018


Ответы (1)


Вам не хватает <router-outlet></router-outlet> в component-detail компоненте

Посмотрите эту рабочую DEMO.

person Amit Chigadani    schedule 22.06.2018