Перейдите к дочернему маршруту, используя именованную розетку маршрутизатора

У меня есть ngtabcontent, поэтому его содержимое должно быть динамическим, поэтому создайте дочерние маршруты для PersonalComponent, и теперь, щелкнув следующий, он должен перейти к своему дочернему маршруту.

    const routes: { path: '', redirectTo: 'tenant', pathMatch: '{ path: "personal", component:  children: [
      { path: 'employer', component: AddemployerComponent, outlet: 'test'},
    ]
  },
  { path: "applicant", component: AddapplicantComponent },
  { path: 'tenant', component: TenantappComponent },
  { path: 'animal', component: AddanimalComponent },
  { path: 'vehicle', component: AddvehiclesComponent },
  { path: 'background-info', component: BackgroundInfoComponent },
  { path: 'termsandconditions', component: TermsandconditionsComponent },
  { path: 'payment', component: PaymentComponent }
];

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

nextFn() {
if (this.router.url === '/personal') {
  this.router.navigate(['employer', {outlets: 'test'}]);
  this.shared.isSubmitPayment = true;
} else if (this.router.url === '/employer') {
  this.router.navigate(['animal']);
} else if (this.router.url === '/animal') {
  this.router.navigate(['vehicle']);
} else if (this.router.url === '/vehicle') {
  this.router.navigate(['background-info']);
} else if (this.router.url === '/background-info') {
  this.router.navigate(['termsandconditions']);
} else if (this.router.url === '/termsandconditions') {
  this.router.navigate(['payment']);
}}

В файле компонентов мой маршрут выглядит так ..

    <div class = "row personal-info">
  <div class = "input-group">
    <div class = "input-group-prepend">
      <div class = "input-group-text" id = "btnGroupAddon"><i class = "fa fa-check" aria-hidden = "true"></i></div>
    </div>
    <p class = "registration"><b>Registration Successful</b></p>
  </div>
</div>
<app-tenant-header></app-tenant-header>
<div class = "form-feilds">
  <h6>Personal Information</h6>
  <ngb-tabset>
    <ngb-tab [id] = "tab.id" *ngFor = "let tab of tabs;let i = index;">
      <ng-template ngbTabTitle>
        {{tab.title}}{{applicantNumberArray[i - 1]}}
      </ng-template>
      <ng-template ngbTabContent>
          <div *ngIf = "!shared.isSubmitPayment">
              <app-formfields [personalInfo]=personalInfo [tabIndex]=i [tabs]=tabs (addApplication) = "addApplicantFn($event)" (deleteApplication) = "deleteApplicantFn($event)"></app-formfields>
          </div>
          <div *ngIf = "shared.isSubmitPayment">
            <router-outlet></router-outlet>
          </div>
      </ng-template>
    </ngb-tab>
  </ngb-tabset>
</div>
<div class = "col-md-12 col-sm-12 col-xs-12 property-footer">
  <app-footer></app-footer>
</div>

и мой html выглядит так ....

Заранее спасибо

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
1 507
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть разница между child route и named route.

дочерний маршрут предназначен для маршрутов, для которых должен появиться другой шаблон в пределах. Они определяются так же, как и у вас, с помощью свойства children в конфигурации маршрута. Дочерний маршрут направляется к выходу маршрутизатора в шаблоне родительского компонента.

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

Судя по вашему примеру, вам нужен дочерний маршрут, а не названный маршрут. Поэтому вам следует убрать свойство outlet из своего кода.

Удалите это здесь:

{ path: 'employer', component: AddemployerComponent, outlet: 'test'}

И тут:

['employer', {outlets: 'test'}]

Он работает, но у меня есть еще один основной выход маршрутизатора, который отображается при попытке перейти к дочернему маршруту, поэтому, когда я пытаюсь перейти к дочернему маршруту, отображаются оба выхода маршрутизатора

UI DEV 17.12.2018 10:30

Не могли бы вы опубликовать это как еще один вопрос с дополнительной информацией о том, что не работает?

DeborahK 17.12.2018 17:44

@DeborahK Не могли бы вы мне помочь с stackoverflow.com/questions/64701379/…?

Gopinath 07.11.2020 11:28

Другие вопросы по теме