我正在摆弄Angular 2 RC5,遇到了以下问题:
“错误:类型WelcomeComponent是两个模块声明的一部分: WelcomeModule和AppModule!
app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { Routes, RouterModule } from '@angular/router';
import { WelcomeModule } from './welcome/welcome.module';
import { AppComponent } from './app.component';
import {
routing,
appRoutingProviders
} from './app.routing';
@NgModule({
imports: [
BrowserModule,
RouterModule,
WelcomeModule,
routing
],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ],
providers: [ appRoutingProviders ]
})
export class AppModule { }
app.routing.ts
import {
Routes,
RouterModule
} from '@angular/router';
import { welcomeRoutes } from './welcome/welcome.routing';
const appRoutes: Routes = [
...welcomeRoutes
];
export const appRoutingProviders: any[] = [];
export const routing = RouterModule.forRoot(appRoutes);
welcome.module.ts
import { NgModule } from '@angular/core';
import { WelcomeComponent } from './welcome.component';
@NgModule({
declarations: [ WelcomeComponent ]
})
export class WelcomeModule { }
welcome.routing.ts
import {
Routes,
RouterModule
} from '@angular/router';
import { WelcomeComponent } from './welcome.component';
export const welcomeRoutes: Routes = [
{ path: 'welcome', component: WelcomeComponent }
];
export const welcomeRoutingProviders: any[] = [];
export const welcomeRouting = RouterModule.forChild(welcomeRoutes);
我可以看到Angular在抱怨什么,welcomeRoutes
需要定义WelcomeModule
中的WelcomeComponent
,appRoutes
引用welcomeRoutes
和routing
被导入到AppModule
中,其中导入了WelcomeModule
,但是我应该如何构建跨越多个模块的路由图呢?
我能看到的唯一解决方案是删除
import { WelcomeModule } from './welcome/welcome.module'
但是,这会违背最初拥有模块的全部目的,不是吗?
发布于 2016-08-16 12:56:54
您为根目录和子目录加载相同的路由配置,但它们必须是不同的路由配置。有关完整示例,请参阅https://angular.io/docs/ts/latest/guide/router.html
发布于 2016-12-08 03:49:17
通过将声明移动到常用模块并将其包含在导出中,以便可以在其他模块中使用,这个问题对我来说很简单。下面是简化的代码示例。
@NgModule({
imports: [CommonModule],
declarations: [
WelcomeComponent
],
exports: [
WelcomeComponent
],
providers: [
]
})
发布于 2016-08-18 00:33:03
嗯,我第一次将WelcomeComponent
添加到AppModule
是通过编写
import { WelcomeModule } from './welcome/welcome.module';
因为WelcomeComponent
在该模块的declarations
中。
然后,我第二次添加了WelcomeComponent
,方法是
const appRoutes: Routes = [
...welcomeRoutes
];
因为WelcomeComponent
是要导航到的组件,所以它似乎被隐式添加到AppModule
中。
我通过将app.routing.ts
更改为
import {
Routes,
RouterModule
} from '@angular/router';
const appRoutes: Routes = [
{ path: '', redirectTo: '/welcome', pathMatch: 'full' }
];
export const appRoutingProviders: any[] = [];
export const routing = RouterModule.forRoot(appRoutes);
将welcomeRouting
声明为RouterModule.forChild
会使welcome
自动成为子路由。
https://stackoverflow.com/questions/38966202
复制相似问题