【问题标题】:Angular 6, router navigation does not load component view but url gets changeAngular 6,路由器导航不会加载组件视图,但 url 会发生变化
【发布时间】:2019-03-12 07:32:17
【问题描述】:

路由器导航不会加载组件,只会更改 url。当我刷新页面并使用相同的导航时,它可以工作。有谁知道如何解决这一问题?我在 app.module.ts 中使用 preloadingStrategy:customPreloading 和 onSameUrlNavigation: "reload" 并且我的 app.routes.ts 包含到组件模块的路由

{ path: 'directory/:domain', loadChildren: 'app/users/users.module#userModule' },

users.module.ts 包含

@NgModule({
    imports: [
        SharedModule,
        userRoutes,
        AddNewUserModule,
        EditUserModule,
        UserListModule
    ],
})

user.routing.ts


 const routes: Routes = [
        {
            path: 'add-new-user', component: AddNewUserComponent
        },
    ]
    export const userRoutes: ModuleWithProviders = RouterModule.forChild(routes);

当我刷新浏览器并访问路由时,它工作正常,但是当我加载我的站点并登录时,当我路由添加新用户页面时,URL 会发生变化,但组件 UI 没有显示,但随后刷新浏览器工作。我也在使用路由保护,但它并没有拒绝我的路由,也没有触发任何导航取消。

有谁知道如何解决这个问题?非常感谢您的努力。

【问题讨论】:

  • 您在控制台上遇到的错误是什么?
  • 您要重定向到的 url 是动态的吗?类似 ab.com/:customparam
  • 如果您能分享一个最小工作示例 StackBlitz 来复制您的问题,那将非常有帮助。
  • 是的,它是动态路由 users/:domain/add-new-user

标签: angular angular-ui-router angular6


【解决方案1】:

您的 AddNewUserComponent 似乎来自与您的 UserModule 不同的模块,您可能希望在您的模块中添加一个 entryComponent 属性并以这种方式导入您的组件:

@NgModule({ 
  imports: [ SharedModule, userRoutes, AddNewUserModule, EditUserModule, UserListModule ], 
  entryComponents: [AddNewUserComponent] 
}) 

实际上,当你想使用一个组件而不用html选择器调用它时,你必须在entryComponents

中导入它

【讨论】:

  • 我什至尝试更改路由的实现,但仍然遇到同样的问题
  • 我假设您已将您的AddNewUserComponent 导出到您的AddNewUserModule 中?
  • 不,我还没有导出组件
  • 问题已解决,因为我已将 *ngIf 指令与 router-outlet 一起使用,并且未触发任何更改检测,此行为也是如此,但现在处理了更改检测
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多