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
我正在 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