일부 지연로드 모듈 (일부는 자체 라우터 콘센트가 있음)이있는 Angular CLI 응용 프로그램이 있습니다. 애플리케이션 루트에서 탐색 할 때 모든 경로에 액세스하는 데 문제가 없습니다. 그러나 게으른로드 된 모듈의 경로로 직접 연결하려고하면 브라우저가 존재하지 않는 폴더에서 응용 프로그램을로드하려고 시도하는 것으로 보입니다.각도가 중첩 된 라우터 콘센트가있는 지연 모듈을 직접로드합니다.
{
path: 'A', loadChildren:
'./A/A.module#AModule',
canActivate: [LoadGuardService]
}
AModule 다음 경로에 대한이 있습니다 :
예를 들어, 루트 라우팅 모듈은 다음과 같이 보일 경로를 가지고 내가 처음부터 응용 프로그램을로드하는 경우 (실행중인
export const AModRoutes: Routes = [
{
path: '', component: AHomeComponent, children: [
{ path: 'building', pathMatch: 'full', component: BuildingComponent },
{ path: 'sitewide', pathMatch: 'full', component: SitewideComponent },
{ path: 'spaces', pathMatch: 'full', loadChildren: '../spaces/spaces.module#SpacesModule' }
]
}
];
포트 4200), 클릭하여 127.0.0.1:4200/A/building
으로 이동할 수 있지만이 동일한 URL로 직접 이동할 수는 없습니다. 이 잘못 기본 href 또는 뭔가를 설정하는 관련이 있는지 궁금
GET http://127.0.0.1:4200/es/inline.bundle.js net::ERR_ABORTED building:20 . . . GET http://127.0.0.1:4200/es/main.bundle.js 404 (Not Found) build:20
:
콘솔은이 같은 오류의 무리를 준다. 나는 최근에 CLI로 전환하여 루트 모듈 공급자에게 { provide: APP_BASE_HREF, useValue: '/' }
을 추가하여 작동 시키도록해야했습니다. 이 질문을 쓰는 동안
뭔가 더 내가 발견 을 나는 A/building
, 말,로 탐색하면, 내가 A/sitewide
에 nvigate 있지만 B/
또는 A/spaces
에 있습니다. (, 그것의 대부분은 적어도)
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { LoadGuardService } from "./services/load-guard.service";
export const APPROUTES: Routes =
[
{
path: 'A', loadChildren:
'./A/A.module#AModule',
canActivate: [LoadGuardService]
},
{
path: 'B', loadChildren:
'./B/B.module#BModule',
canActivate: [LoadGuardService],
data: { byPhone: false }
},
...
];
@NgModule({
imports: [RouterModule.forRoot(APPROUTES)],
exports: [RouterModule],
providers: [LoadGuardService]
})
export class AppRoutingModule { }
이 명확하게하기 위해, 경로 배열의 생략은 실제 코드에없는 추가 루트 라우터 모듈 :이 CLI에
편집을 전환하기 전에 문제가 아니었다 . 그냥 스 니펫을 줄이기 위해
LoadGuardService가 false를 반환 할 가능성이 있습니다 (하위 구성 요소가 활성화 된 서비스에 의존합니까?) 아니면 느슨하게뿐만 아니라 다른 경로 또는 다른 경로에서 RouterModule을로드하고있는 중일 수 있습니다. –
LoadGuardService를 제거하고 항상 스텁을 반환하여 테스트했습니다. 나는 LoadGuardService가 false를 반환하면 내비게이션이 단순히 발생하지 않을 것이라고 생각하지만 대신 디렉토리가 아닌 A/building에서 애플리케이션을로드하려고 시도하는 것으로 보인다. AppRoutingModule을 가져 오기에 처음으로 배치하고 변경하지 않고 마지막에 배치하려고했습니다. –
그리고 앱 라우팅에서'imports : [RouterModule.forRoot (routes)]'를 사용하고 있고 자녀에게'imports : [RouterModule.forChild (routes)]'를 사용하고 있습니까? 이것은 내가 결코 만났던 이상한 사람이다, 미안 나는 더 많은 도움이 아니다. –