Угловая маршрутизация продолжает перенаправлять на дом при вводе действительного URL в браузере - PullRequest
1 голос
/ 16 апреля 2019

У меня были эти конфигурации маршрутизации, и они работают безупречно, меня раздражает только одно: даже если навигация в приложении работает, когда я захожу в адресную строку и нажимаю ввод, она перенаправляет меня на / панель управления, даже если я не изменяюURL и нажмите Enter.

Вот моя конфигурация маршрутов:

import { Routes } from '@angular/router';

import { FullComponent } from './layouts/full/full.component';

export const Approutes: Routes = [
  {
    path: '',
    component: FullComponent,
    children: [
      {
        path: 'usuarios',
        loadChildren: './pages/usuarios/usuarios.module#UsuariosModule'
      },
      {
        path: 'autores',
        loadChildren: './pages/autores/autores.module#AutoresModule'
      },
      {
        path: 'conteudos',
        loadChildren: './pages/conteudos/conteudos.module#ConteudosModule'
      },
      {
        path: 'projetos',
        loadChildren: './pages/projetos/projetos.module#ProjetosModule'
      },
      {
        path: 'dashboard',
        loadChildren: './pages/dashboard/dashboard.module#DashboardModule'
      },
    ]
  },
  {
    path: 'login',
    loadChildren: './pages/login/login.module#LoginModule'
  },
  {
    path: '',
    redirectTo: '/dashboard',
    pathMatch: 'full'
  }
];

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

Заранее всем спасибо.

Редактировать: Забавно, я пытался полностью удалить маршрут из панели мониторинга и сохранил только другие маршруты по любой причине.(или по волшебству) мое приложение все еще пытается достичь маршрута на панели мониторинга, в одной отладке я обнаружил что-то вроде «отложенной загрузки маршрута».

Редактировать 2: В итоге я попал в журнал маршрутизатора: «Идентификатор навигации 1 неравный текущему идентификатору навигации 2 ", тогда я продолжаю бороться и решил изменить свой модуль маршрутизатора, вместо того, чтобы возвращать и const, и в AppModule вызывать RouterModule.forRoot (Approutes) Я изменил на это:

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

import { FullComponent } from './layouts/full/full.component';
import { NgModule } from '@angular/core';

const routes: Routes = [
  {
    path: '',
    component: FullComponent,
    children: [
      {
        path: 'dashboard',
        loadChildren: './pages/dashboard/dashboard.module#DashboardModule'
      },
      {
        path: 'usuarios',
        loadChildren: './pages/usuarios/usuarios.module#UsuariosModule'
      },
      {
        path: 'autores',
        loadChildren: './pages/autores/autores.module#AutoresModule'
      },
      {
        path: 'conteudos',
        loadChildren: './pages/conteudos/conteudos.module#ConteudosModule'
      },
      {
        path: 'projetos',
        loadChildren: './pages/projetos/projetos.module#ProjetosModule'
      }
    ]
  },
  {
    path: 'login',
    loadChildren: './pages/login/login.module#LoginModule'
  }
];

@NgModule({
  imports: [RouterModule.forRoot(routes, {enableTracing: true})],
  exports: [RouterModule]
})

export class AppRoutingModule { }

НО это сначала не решается, и, основываясь на ошибке, которую я получил в журналах, упомянутых выше, я подумал, не испортил ли мое решение все проблемы.

В дочерних маршрутах у меня есть что-то вроде:

const routes: Routes = [
  {
    path: '',
    component: UsuariosIndexComponent,
    resolve: {
      paginacao: UsuariosPageResolver
    }
  }
];

и в моем резольвере у меня есть:

export class UsuariosPageResolver implements Resolve<any> {
  pagina = 1;
  itensPorPagina = 10;
  filtro = '';
  constructor(private usuariosService: UsuariosService) { }

  resolve() {
    return this.usuariosService.paginar(this.pagina, this.itensPorPagina, this.filtro);
  }
}

Дело в том, что когда я изменил маршруты и прокомментировал решениевызов, это сработало, НО, когда я раскомментировал решение, которое продолжало работать:)

Я буду продолжать наблюдать за этим, и любой новый результат я буду редактировать.

Edit3: BREAKING NEWS, хотяЯ ничего не реализовал ни в AuthGuard, ни в перехватчиках, ни в чем-либо подобном, ошибка возникает, когда я вхожу в систему, если я очищаю данные сайта, он снова работает.

Ответы [ 2 ]

1 голос
/ 16 апреля 2019

У вас есть два идентичных пути, один для FullComponent, другой для перенаправления на панель мониторинга:

    path: '',  <---------------------- Empty path
    component: FullComponent,
    children: [ ... ]
  }, 
  {
    path: '', <---------------------- Empty path
    redirectTo: '/dashboard',
    pathMatch: 'full'
  }

Было ли в последнем определении маршрута ваше намерение перенаправить пользователей на dashboard для неизвестных маршрутов?Если это так, вам нужно использовать ** подстановочный знак:

  {
    path: '**',
    redirectTo: '/dashboard',
    pathMatch: 'full'
  }
0 голосов
/ 16 апреля 2019

Кто бы мог догадаться?

Моя проблема не заключалась в маршрутах, это была служба, которая контролирует аутентификацию, и я по ошибке поставил в конструкторе неправильное условие:

if (loggedUser !== null) ths.router.navigateToUrl('/dashboard');

, поэтому, когда я вошел в системуи навигация по меню идет хорошо, но когда я нажимаю перезагрузить или вводить URL вручную, мы получаем «ошибку» (или функцию, lol), потому что конструктор вызывается снова, а затем происходит перенаправление.

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

Что ж, спасибо всем.

...