首页 > 解决方案 > Nativescript 和 Angular 路由 - URL 段错误

问题描述

在我的 Nativescript/Angular 应用程序中,我有一个名为 UsersModule 的主模块;它包含两个模块,UsersListModule 和 ManageUserModule。这是结构: - 用户

- users
   - manageUsers
     * manageUsers-routing.module.ts
     * manageUsers.component.ts
     * manageUsers.component.html
     * manageUsers.module.ts
   - usersList
     * usersList-routing.module.ts
     * usersList.component.ts
     * usersList.component.html
     * usersList.module.ts
 * users-routing.module.ts
 * users-routing.module.html
 * users.component.ts
 * users.module.ts

这是应用程序路由:

const routes: Routes = [
{ path: "", redirectTo: "/login", pathMatch: "full" },
{ path: "login", component: LoginComponent },
{ path: "users", loadChildren: "~/app/users/users.module#UsersModule", canActivate: [AuthGuard] }
];

这是UsersRoutingModule:

const routes: Routes = [
{
    path: "default", component: UsersComponent, canActivate: [AuthGuard], children: [
        { path: "usersList", component: NSEmptyOutletComponent, loadChildren: "~/app/users/usersList/usersList.module#UsersListModule", outlet: "usersList" },
        { path: "manageUsers", component: NSEmptyOutletComponent, loadChildren: "~/app/users/manageUsers/manageUsers.module#ManageUsersModule", outlet: "manageUsers" },
    ]
}
];

这是用户列表路由:

    const routes: Routes = [
    { path: "", redirectTo: "usersList" },
    { path: "usersList", component: UsersListComponent }
];

这是 MangeUsers 路由:

    const routes: Routes = [
    { path: "", redirectTo: "newUser" },
    { path: 'newUser', component: ManageUserComponent },
    { path: 'editUser/:userId', component: ManageUserComponent }
];

这是 users.component.html:

.....
<page-router-outlet name="usersList"></page-router-outlet>
<page-router-outlet name="manageUsers"></page-router-outlet>
.....

问题是当我在用户列表中并且我想去编辑选定的用户时,角度无法找到段 url 并且无法重定向我。在 UsersListComponent 我有这个功能:

  goToEdit(data) {
    let urlTree = this.router.createUrlTree(['../editUser', data.userId], {
        relativeTo: this.activeRoute
    });
    this.routerExtensions.navigateByUrl(urlTree);
};

但是如果我尝试去编辑它会返回这个错误:

ERROR 错误:未捕获(在承诺中):错误:无法匹配任何路由。URL 段:“用户/默认”

我在 users.component 的 sidenav 中有一个类似的问题,我尝试:

    open() {
    this.closeSideDrawer();
    const urlTree = this.router.createUrlTree(['/users/newUser'], {
        relativeTo: this.activeRoute
    });
    this.routerExtensions.navigateByUrl(urlTree);
}

但是如果我单击它,它不会重定向,它只会关闭侧边栏并且什么也没有发生

标签: angularnativescriptnativescript-angularrouter-outlet

解决方案


推荐阅读