在单个 angular 应用程序中路由多个项目
Routing through multiple projects in a single angular app
我有一个主应用程序和一个子应用程序。当我单击主应用程序中的锚 link 时,我需要显示子应用程序。但是没用。
项目结构:
one-app
-project
--scrapper
---e2e
---src
-src
在我的子应用程序的路由模块中,我添加了像
这样的路由
const routes: Routes = [
{ path: '', component: HomeComponent}
];
和子应用的应用组件
<router-outlet></router-outlet>
在子应用的应用模块中,我将现有代码附加到下面的代码中
@NgModule({})
export class ScrapperSharedModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: AppModule,
providers: []
};
}
}
到目前为止一切都很好。我猜!!
现在在父应用程序的路由中我添加了以下代码
{ path: 'scrapper',
loadChildren: '../../projects/scrapper/src/app/app.module#ScrapperSharedModule'
}
并且在父应用程序的应用程序模块中,我在 ngmodule 部分导入了以下代码
imports: [
...
ScrapperSharedModule.forRoot(),
]
现在,在我父应用程序的一个组件中,我有一个锚标记
<a routerLink="/scrapper">
当我点击这个 link 时,没有任何反应。我的意思是 Url 正在改变,但浏览器显示父应用程序而不是子应用程序。我在这里做错了什么?
如果我理解正确的话。您正在尝试 运行 同一端口上的两个不同项目。但这是不可能的,因为您在构建项目时定义了不同的工作空间和操作方法。如需更多信息,我建议您查看 related article.
如果你不想处理两个不同的项目,我认为这是正确的方法。通过将所有项目组合在一个应用程序下,您可以轻松地使用 Lazy Loading method. For further information, I suggest you to review the related document.
引导和加载它们
Angular 项目是使用单一代码库(monorepo 概念)开发不同的应用程序。
实现它的一种方法是使用 library
。将您的第二个应用程序构建为库(具有内部路由的标准模块)并将其作为 lib 模块导入另一个应用程序并将其添加到第一个应用程序的路由中。
对于 运行 独立的第二个应用程序,在项目文件夹中创建另一个应用程序并将库导入 AppModule。
你的问题引起了我的注意。同时拥有亲子项目运行真的很有意思。但是,angular 是一个单页应用程序,我认为解决问题的唯一方法是通过混合项目并将子项目组件导入 app.module
并将它们 运行不同的路由,
main app
---e2e
---src
-----app
------components
----------yourmainprojectcomponents
----------childprojectcomponents
层次不清晰请见谅,有求必答!
根据描述,基本上您希望您的两个应用程序都需要在 SPA 模式下工作。
在这种情况下,您可以尝试按照本文 (https://medium.com/disney-streaming/combining-multiple-angular-applications-into-a-single-one-e87d530d6527)
中的建议设置您的两个应用程序
我有一个主应用程序和一个子应用程序。当我单击主应用程序中的锚 link 时,我需要显示子应用程序。但是没用。
项目结构:
one-app
-project
--scrapper
---e2e
---src
-src
在我的子应用程序的路由模块中,我添加了像
这样的路由const routes: Routes = [
{ path: '', component: HomeComponent}
];
和子应用的应用组件
<router-outlet></router-outlet>
在子应用的应用模块中,我将现有代码附加到下面的代码中
@NgModule({})
export class ScrapperSharedModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: AppModule,
providers: []
};
}
}
到目前为止一切都很好。我猜!!
现在在父应用程序的路由中我添加了以下代码
{ path: 'scrapper',
loadChildren: '../../projects/scrapper/src/app/app.module#ScrapperSharedModule'
}
并且在父应用程序的应用程序模块中,我在 ngmodule 部分导入了以下代码
imports: [
...
ScrapperSharedModule.forRoot(),
]
现在,在我父应用程序的一个组件中,我有一个锚标记
<a routerLink="/scrapper">
当我点击这个 link 时,没有任何反应。我的意思是 Url 正在改变,但浏览器显示父应用程序而不是子应用程序。我在这里做错了什么?
如果我理解正确的话。您正在尝试 运行 同一端口上的两个不同项目。但这是不可能的,因为您在构建项目时定义了不同的工作空间和操作方法。如需更多信息,我建议您查看 related article.
如果你不想处理两个不同的项目,我认为这是正确的方法。通过将所有项目组合在一个应用程序下,您可以轻松地使用 Lazy Loading method. For further information, I suggest you to review the related document.
引导和加载它们Angular 项目是使用单一代码库(monorepo 概念)开发不同的应用程序。
实现它的一种方法是使用 library
。将您的第二个应用程序构建为库(具有内部路由的标准模块)并将其作为 lib 模块导入另一个应用程序并将其添加到第一个应用程序的路由中。
对于 运行 独立的第二个应用程序,在项目文件夹中创建另一个应用程序并将库导入 AppModule。
你的问题引起了我的注意。同时拥有亲子项目运行真的很有意思。但是,angular 是一个单页应用程序,我认为解决问题的唯一方法是通过混合项目并将子项目组件导入 app.module
并将它们 运行不同的路由,
main app
---e2e
---src
-----app
------components
----------yourmainprojectcomponents
----------childprojectcomponents
层次不清晰请见谅,有求必答!
根据描述,基本上您希望您的两个应用程序都需要在 SPA 模式下工作。
在这种情况下,您可以尝试按照本文 (https://medium.com/disney-streaming/combining-multiple-angular-applications-into-a-single-one-e87d530d6527)
中的建议设置您的两个应用程序