首页 文章

如何在不覆盖第二个项目的路由的情况下在另一个angular2项目中导入angular2项目?

提问于
浏览
1

我在另一个angular2项目“project2”中导入angular2项目“project1”时遇到了一些麻烦 . 我想当project2运行时将它重定向到我的AppRoutingViewsModule中指定的Login2Component,但实际上是重定向到第一个项目内的路由中指定的LoginComponent . 这是我的路由文件以及app.module,我将第一个项目导入第二个项目 .

AppRoutingModule project1

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { DashboardComponent } from './dashboard.component';
import { AppAuthGuard } from "./security/app-auth-guard.component";
import { NoAuthComponent } from '../app/layouts/no-auth/no-auth.component';
import { NotFoundComponent } from '../app/layouts/not-found/notfound.component';
import { LoginComponent } from './login.component';
import { HomeComponent } from './home.component';
import { SsvmnComponent } from './ssvmn.component';

const routes: Routes = [
    { path: '', redirectTo: 'login', pathMatch: 'full' },
    { path: 'login', component: LoginComponent }, 
    { path: 'home', component: HomeComponent,canActivate: [AppAuthGuard],
     children: [
        { path: '', redirectTo: 'dashboard', pathMatch: 'full' },
        { path: 'dashboard', component: DashboardComponent },
        { path: 'ssvmn/:comp', component: SsvmnComponent }
     ]
    },
    { path: 'no-auth', component: NoAuthComponent },
    { path: '**', component: NotFoundComponent }
];
@NgModule({
    imports: [RouterModule.forRoot(routes)],
    exports: [RouterModule]
})
export class AppRoutingModule { }

AppRoutingViewsModule project2

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { Login2Component } from './login.component';

const routes: Routes = [
    { path: '', redirectTo: 'login2', pathMatch: 'full' },
    { path: 'login2', component: Login2Component }
];

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

App module project2

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponentsModule } from 'sigma-web';
import { AppRoutingViewsModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { Login2Component } from './login.component';

@NgModule({
declarations: [
    AppComponent,
    Login2Component
],
imports: [
    BrowserModule,
    AppComponentsModule,
    AppRoutingViewsModule
],
    providers: [],
    bootstrap: [AppComponent]
})
export class AppModule { }

如果您需要更多信息,请与我们联系 . 谢谢 .

Solution:

它不会覆盖它 . 它合并路线,然后选择与路线匹配的第一条路径 . 所以它基本上忽略了任何看似重复的路径 . 如果在合并的路径集中有通配符路径,则会忽略通配符路径之后的所有路径,因为路由器将选择通配符路径Credits:DeborahK

1 回答

  • 0

    这段代码:

    declarations: [
        AppComponent,
        LoginComponent
    ],
    

    合并两个组件的路由 . 所以你有:

    { path: '', redirectTo: 'login', pathMatch: 'full' },
    { path: 'login', component: LoginComponent }
    { path: '', redirectTo: 'login2', pathMatch: 'full' },
    { path: 'login2', component: Login2Component }
    

    由于路由顺序很重要且路由器始终与第一个匹配一起使用,因此空(默认)路由将始终转到登录路径 .

    如果您可以提供有关您要完成的具体内容的更多信息,我们可能会提供有关如何实现该目标的更多信息 .

    根据您要做的事情,“父”路线可能有助于区分两组路线 .

相关问题