【发布时间】:2019-02-18 21:35:28
【问题描述】:
我遇到了路由问题。我在单元组件中向我的数据库添加一个新单元。网址如下:
当插入到我的数据库成功时,从 PHP 将 id 发送回.subscribe() 方法:
.subscribe(
(data)=>{
console.log(data);
//this.router.navigate(['unit/addH/'+data]);
},
(error)=>{
console.log(error);
}
)
我需要直接重定向到另一个组件,通过url获取我返回的id:
.subscribe(
(data)=>{
console.log(data);
this.router.navigate(['unit/addH/'+data]);
},
(error)=>{
console.log(error);
}
)
所以控制台上的数据可用,但是当重定向时,由于路径无法识别,它把我带到了初始组件。
这里是路由路径:
const routes: Routes = [
{
path: '',
component: RegistrationComponent
},
{
path: 'unit',
component: UnitComponent
},
{
path: 'unit/:unit_id',
component: UnitEditComponent
},
{
path: 'unit/addH/:uid',
component: AddHComponent
},
{
path: '**',
redirectTo: 'registration',
pathMatch: 'full'
}
];
我尝试使用queryParams:
this.router.navigate(['unit/addH', {queryParams: {unit_id: data}}]);
但仍然重定向到`注册组件。
请注意控制台没有错误。
在网络标签:
编辑
完整的路由脚本:
第一个路由模块(Parent):
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { LoginComponent } from './login/login.component';
import { ForgotPasswordComponent } from './forgot-password/forgot-password.component';
import { AuthGuardService } from './auth-guard.service';
const routes: Routes = [
{
path: 'login',
component: LoginComponent
},
{
path:'',
component: LoginComponent
},
{
path: 'forgot',
component: ForgotPasswordComponent
//canActivate: [AuthGuardService]
},
{
path:'dashboard',
loadChildren: '../app/dashboard/dashboard.module#DashboardModule'
},
{
path: '**',
redirectTo: 'login',
pathMatch: 'full'
}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
仪表板模块:
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { DashboardComponent } from './dashboard.component';
import { HomeComponent } from './home/home.component';
const routes: Routes = [
{
path:'',
component: DashboardComponent,
children: [
{
path:'',
component: HomeComponent
},
{
path: 'home',
loadChildren: './main-navbar/main-navbar.module#MainNavbarModule'
},
{
path: 'registration',
loadChildren: './registration/registration.module#RegistrationModule'
}
]
},
{
path:'**',
redirectTo: 'dashboard',
pathMatch: 'full'
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class DashboardRoutingModule { }
注册模块:
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { RegistrationComponent } from './registration.component';
import { UnitComponent } from './unit/unit.component';
import { UnitEditComponent } from './unit/unit-edit/unit-edit.component';
import { AddHouseholdComponent } from './unit/add-household/add-household.component';
const routes: Routes = [
{
path: '',
component: RegistrationComponent
},
{
path: 'unit',
component: UnitComponent
},
{
path: 'unit/:unit_id',
component: UnitEditComponent
},
{
path: 'unit/addH/:uid',
component: AddHouseholdComponent
},
{
path: '**',
redirectTo: 'registration',
pathMatch: 'full'
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class RegistrationRoutingModule { }
我被重定向到登录组件。
【问题讨论】:
-
在你的路由前加一个正斜杠可能会解决你的问题,this.router.navigate(['/unit/addH/'+data]);
-
不。它仍然重定向到父组件。
-
你从哪条路线导航到这条路线,意味着当你导航到这条路线时你的活动路线是什么?
-
http://localhost:4200/dashboard/registration/unit -
你会做一个小提琴吗?我可以调查一下。
标签: angular routing angular6 angular-router