Angular 路由不适用于许多模块

Angular routes not working with many modules

我正在 Angular 4 中创建我的第一个应用程序,并且我将我的 AppRoutingModule 导入 app.module.ts,据我所知,通过将模块导入此 app.module 它变成了"visible" 到应用程序的其余部分。根据这个原理,我没有在下面的模块中声明(retaguarda.module),但是组件retaguarda.component在其html中有<router-outlet> </ router-outlet>标签,显示的错误要求导入AppRoutingModule 在rearModule 里面,但是,如上所述,在app.module 中被声明,应该对rear 不可见。还有模块?

直接在retaguardamodule中声明错误消失,但是导航有bug,所以我相信问题不止一个地方。你也能帮我吗?

app.module.ts:

...
    @NgModule({
      declarations: [
        AppComponent
      ],
      imports: [
        BrowserModule,
        FormsModule,
        HttpModule,

        AppRoutingModule,
        RetaguardaModule,
        LoginModule
      ],
      providers: [
        LoginGuard,
        LoginService,
        Ambiente
      ],
      bootstrap: [AppComponent]
    })
    export class AppModule { }

retaguarda.module.ts:

...
@NgModule({
  imports: [
    CommonModule,
    NavbarModule,
    SidenavModule,
    CadastrosModule,
    MovimentacoesModule,
    AdministracaoModule,
    RelatoriosModule,
    ConfiguracoesModule,
    DashboardModule
  ],
  declarations: [
    RetaguardaComponent
  ],
  exports: [
    RetaguardaComponent
  ]
})
export class RetaguardaModule { }

app.component.html:

<app-retaguarda></app-retaguarda>

retaguarda.component.html:

<header>
    <app-navbar *ngIf="ambiente.usuarioLogado"></app-navbar>
    <app-sidenav ></app-sidenav>
</header>
<div class="container">
    <router-outlet></router-outlet>
</div>

你需要在这里使用.forRoot().forChild()

从 AppRoutingModule.forRoot() 开始,通过一条路线即可获得 RetaguardaComponent。接下来,让 RetaguardaModule 使用 .forChild() 符号在您的模块内进行路由。

如果 RetaguardaComponent 没有任何子路由并且本身不是路由(即它始终显示),则考虑将其放入 CoreModule 并让 AppComponent 处理路由.

阅读此页面的更多内容以更好地掌握如何设置路由:

https://angular.io/docs/ts/latest/guide/router.html#!#why-routing-module