Angular 4 Routes/RouterModule 影响域后的路径
Angular 4 Routes/RouterModule affecting path after domain
我的 Angular 应用程序托管在我无法控制的服务器上,我只能通过导航到此 link.
来访问
externalServer.com/myAppName
每当我导航到这个 link 时,我应该在 myAppName
之后看到 /#/home
,但我看到的却是这个。
externalServer.com/#/home
问题是 myAppName
正在从路径中删除。我想看的URL是这个
externalServer.com/myAppName/#/home
我的问题是这样的。 Angular RouterModule 或 Routes 组件是否可能导致路径上的 myAppName
部分被截断的问题?或者问题与 Angular 无关?
我对Angular不够熟悉,不知道这是路线问题还是完全不同的问题,所以我只是想弄清楚我的精力在哪里。我假设如果这是可以用 Angular 修复的东西,那么可能需要在 app.module.ts 文件中进行更改,所以我将在下面 post。感谢您的帮助。
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import { RouterModule, Routes } from '@angular/router';
import { AppComponent } from './app.component';
import { DesktopUiComponent } from './desktop-ui/desktop-ui.component';
import { MobileUiComponent } from './mobile-ui/mobile-ui.component';
import { RouterComponent } from './router/router.component';
const appRoutes: Routes = [
{ path: 'home', component: RouterComponent },
{ path: '', redirectTo: '/home', pathMatch: 'full' }
];
@NgModule({
declarations: [
AppComponent,
DesktopUiComponent,
MobileUiComponent,
RouterComponent
],
imports: [
BrowserModule,
HttpClientModule,
RouterModule.forRoot(appRoutes, { useHash: true })
],
exports: [
RouterModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
我找到了另一个 post 回答了我的问题。 link 如下。
此外,下面是我更新的 app.module.ts 文件,其中包含允许应用 运行 具有任何起始路径的更改。
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import { RouterModule, Routes } from '@angular/router';
import { AppComponent } from './app.component';
import { DesktopUiComponent } from './desktop-ui/desktop-ui.component';
import { MobileUiComponent } from './mobile-ui/mobile-ui.component';
import { RouterComponent } from './router/router.component';
const appRoutes: Routes = [
{ path: '', component: RouterComponent }
];
export function getBaseLocation() {
let paths: string[] = location.pathname.split('/').splice(1, 1);
let basePath: string = (paths && paths[0]) || '';
return '/' + basePath;
}
@NgModule({
declarations: [
AppComponent,
DesktopUiComponent,
MobileUiComponent,
RouterComponent
],
imports: [
BrowserModule,
HttpClientModule,
RouterModule.forRoot(appRoutes)
],
exports: [
RouterModule
],
providers: [{ provide: APP_BASE_HREF, useFactory: getBaseLocation }],
bootstrap: [AppComponent]
})
export class AppModule { }
我的 Angular 应用程序托管在我无法控制的服务器上,我只能通过导航到此 link.
来访问externalServer.com/myAppName
每当我导航到这个 link 时,我应该在 myAppName
之后看到 /#/home
,但我看到的却是这个。
externalServer.com/#/home
问题是 myAppName
正在从路径中删除。我想看的URL是这个
externalServer.com/myAppName/#/home
我的问题是这样的。 Angular RouterModule 或 Routes 组件是否可能导致路径上的 myAppName
部分被截断的问题?或者问题与 Angular 无关?
我对Angular不够熟悉,不知道这是路线问题还是完全不同的问题,所以我只是想弄清楚我的精力在哪里。我假设如果这是可以用 Angular 修复的东西,那么可能需要在 app.module.ts 文件中进行更改,所以我将在下面 post。感谢您的帮助。
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import { RouterModule, Routes } from '@angular/router';
import { AppComponent } from './app.component';
import { DesktopUiComponent } from './desktop-ui/desktop-ui.component';
import { MobileUiComponent } from './mobile-ui/mobile-ui.component';
import { RouterComponent } from './router/router.component';
const appRoutes: Routes = [
{ path: 'home', component: RouterComponent },
{ path: '', redirectTo: '/home', pathMatch: 'full' }
];
@NgModule({
declarations: [
AppComponent,
DesktopUiComponent,
MobileUiComponent,
RouterComponent
],
imports: [
BrowserModule,
HttpClientModule,
RouterModule.forRoot(appRoutes, { useHash: true })
],
exports: [
RouterModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
我找到了另一个 post 回答了我的问题。 link 如下。
此外,下面是我更新的 app.module.ts 文件,其中包含允许应用 运行 具有任何起始路径的更改。
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import { RouterModule, Routes } from '@angular/router';
import { AppComponent } from './app.component';
import { DesktopUiComponent } from './desktop-ui/desktop-ui.component';
import { MobileUiComponent } from './mobile-ui/mobile-ui.component';
import { RouterComponent } from './router/router.component';
const appRoutes: Routes = [
{ path: '', component: RouterComponent }
];
export function getBaseLocation() {
let paths: string[] = location.pathname.split('/').splice(1, 1);
let basePath: string = (paths && paths[0]) || '';
return '/' + basePath;
}
@NgModule({
declarations: [
AppComponent,
DesktopUiComponent,
MobileUiComponent,
RouterComponent
],
imports: [
BrowserModule,
HttpClientModule,
RouterModule.forRoot(appRoutes)
],
exports: [
RouterModule
],
providers: [{ provide: APP_BASE_HREF, useFactory: getBaseLocation }],
bootstrap: [AppComponent]
})
export class AppModule { }