Angular和uirouter-如何定义路线

时间:2018-06-29 08:02:23

标签: javascript angular typescript angular-ui-router angular2-routing

我正在创建一个使用Angular 6(# Django 1.11 already includes OuterRef and Subquery, but I'm working with Django 1.9 from django_subquery.expressions import OuterRef, Subquery items = B.objects.filter(my_type=OuterRef('type')).order_by('position') A.objects.all().annotate(position=Subquery(items.values('position')[:1])).order_by('position') )和@ uirouter / angular(6.0.6)的应用程序。但是我的应用程序未协调路线“ 2.0.0”,仅导航到“ /login”(即使我删除了“ /”)

此应用程序包含具有多个页面的多个模块。结构可以描述如下:

otherwise: '/'

两个模块都有一个单独的路由文件。我认为它将起作用的方式如下(简化示例,不要介意缺少的部分):

app.module.ts

app/
-- home/
---- home.module.ts
---- home.component.ts
---- home.route.ts
---- home.scss
---- home.html
-- login/
---- login.module.ts
---- login.component.ts
---- login.route.ts
---- login.scss
---- login.html
-- app.module.ts
-- app.component.ts

home.module.ts

@NgModule({
  declarations: [AppComponent],
  imports: [
    UIRouterModule.forRoot({otherwise: '/'}),
    HomeModule,
    LoginModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule {
}

home.route.ts

@NgModule({
  imports: [
    UIRouterModule.forChild({states: [homeState]}),
    NavbarModule
  ],
  declarations: [HomeComponent],
  providers: []
})
export class HomeModule {
}

login.module.ts

export const homeState: Ng2StateDeclaration = {
  name: 'home',
  url: '/',
  component: HomeComponent
};

login.route.ts

@NgModule({
  imports: [
    UIRouterModule.forChild({states: [loginState]}),
  ],
  declarations: [LoginComponent],
  providers: []
})
export class LoginModule {
}

我希望export const loginState: Ng2StateDeclaration = { name: 'login', url: '/login', component: LoginComponent }; 方法只会将路由添加到配置中。但是UIRouterModule.forChild()路由未得到协调,仅导航回到/login。我不想在所有路由都发生的地方创建一个子模块,因为那样的话,我还必须导入组件在该模块中的所有依赖关系(到目前为止,关注点和模块化)。

对于我的示例应用程序,其外观如下:

/

const states = [homeState, loginState]; @NgModule({ imports: [ UIRouterModule.forChild({states: [states], otherwise: '/'}), NavbarModule ], declarations: [HomeComponent, loginComponent], providers: [] }) export class AppRoutingModule { } 不需要loginComponent,但仍然可以通过这种方式获取。.

由于这行不通,所以我显然做错了。谁能告诉我我做错了什么以及应该如何解决?

1 个答案:

答案 0 :(得分:0)

您的架构可能需要更多思考。看看this blog post中的方法,该方法使用本地Angular路由器来实现您要尝试的操作。