Angular 9-单一SPA子路由问题



我一直在四处寻找这个问题的答案,但我做不到,如果已经有人问我了,我很抱歉!

我已经创建了一些小的angular 9应用程序,我正在使用单个spa将其导入到一个基本的html页面中。我的应用程序在本地不同的端口上运行,我的导入声明如下:

<script type="systemjs-importmap">
{
"imports": {
"footer": "http://localhost:4201/main.js",
"dashboard": "http://localhost:4202/main.js",
"header": "http://localhost:4300/main.js",
"single-spa": "https://cdnjs.cloudflare.com/ajax/libs/single-spa/4.3.5/system/single-spa.min.js"
}
}
</script>

我在我的html页面中有路线,这样应用程序就会显示在不同的路线上,这是我正在导入的应用程序注册中的一项:

System.import('single-spa').then(function (singleSpa) {
singleSpa.registerApplication(
'header',
function () {
return System.import('header');
},
function (location) {
return location.pathname.startsWith('/header');
// return true;
}
)

这一切都很好,我的简单应用程序也会显示出来。当我试图将一些子页面添加到我的简单应用程序中并路由到我的主"shell"应用程序中时,问题就出现了,如果我导航到"localhost:4200/header",我导入的"header"应用程序就会正确显示。如果我尝试在该应用程序中导航到一个子页面,例如我在"标题"应用程序"应用程序路由模块"中设置的这个子路径:

{ path: '**', component: EmptyRouteComponent, children: [
{path: 'sub-details', component: DetailsComponent}

]},

什么也没发生。我在"header"应用程序的登录页上有一个<router-outlet></router-outlet>,还有一个类似的链接:<a [routerLink]="['./dets']">Dets</a>,但不是在主应用程序中路由到"localhost:4200/header/dets",而是到"localhost=4200/dets"的角度路由,当然这是不存在的。有人知道我遗漏了什么吗?如有任何帮助,我们将不胜感激!

这似乎与single-spa angular"配置路线"部分提到的注释直接相关;建议使用"/"作为APP_BASE_HREF,并在每个路由组件和路由器链接中重复Angular应用程序的url前缀。如果您在angular应用程序活动函数中设置/angular以在url以该值开头时挂载,则必须在所有链接中添加/angular前缀"-非洛索

最新更新