Я пытаюсь запустить гибридное приложение с угловыми 2 компонентами.Ниже приведены настройки, которые я выполнил для запуска гибридного приложения, я могу запустить приложение, и компонент «my-app» также инициализируется в этом гибридном приложении, но когда я пытаюсь получить доступ к компоненту (FirstComponent) с помощью route (»/ first "), он загружает FirstComponent, но автоматически перенаправляет на мой маршрут по умолчанию angular 1.
index.html
<base href="/hybridApp/">
<my-app></my-app>
app.component.ts
@Component({
selector: 'my-app',
template: '<router-outlet></router-outlet>' +
'<div ng-view></div>',
})
export class AppComponent {
name = 'Angular';
}
app.module.ts
@NgModule({
imports: [
BrowserModule,
UpgradeModule,
RouterModule,
FirstModule
],
declarations: [
AppComponent
],
bootstrap: [ AppComponent ]
})
export class AppModule {
constructor(private upgrade: UpgradeModule) { }
ngDoBootstrap() {
}
}
first.module.ts
export class Ng1Ng2UrlHandlingStrategy implements UrlHandlingStrategy {
shouldProcessUrl(url: any) {
return url.toString().startsWith("/first");
}
extract(url: any) {
return url;
}
merge(url: any, whole: any) {
return url;
}
}
const routes : Routes = [
{
path :'first',
component: FirstComponent
}
]
@NgModule({
imports:[
RouterModule.forRoot(routes,{ useHash: true, initialNavigation: true, enableTracing: true })
],
exports:[
],
declarations:[
FirstComponent
],
providers:[
{ provide: UrlHandlingStrategy, useClass: Ng1Ng2UrlHandlingStrategy }
]
})
export class FirstModule {}
first.component.ts
@Component({
selector:'first-component',
templateUrl:'src/app/first.component.html',
styleUrls:['src/app/first.component.css']
})
export class FirstComponent implements OnInit{
ngOnInit(){
console.log("first component rendered..")
}
constructor(
private route:ActivatedRoute
)
{}
}
main.ts
platformBrowserDynamic().bootstrapModule(AppModule).then(platformRef => {
const upgrade = platformRef.injector.get(UpgradeModule) as UpgradeModule;
upgrade.bootstrap(document.body, ['angular1App']);
});
Я могу видеть логи моего первого компонента FirstComponent, отображаемого.. ", но вместо того, чтобы оставаться на этом маршруте, он перенаправляет на маршрут по умолчанию приложения angular1.
Вот журналы, которые я вижу сквозным подходом, предложенным @ jeffrey
NavigationStart {id: 8, url: "/first"}
NavigationStart {id: 8, url: "/first"}
RoutesRecognized {id: 8, url: "/first", urlAfterRedirects: "/first", state: RouterStateSnapshot}
RoutesRecognized {id: 8, url: "/first", urlAfterRedirects: "/first", state: RouterStateSnapshot}
GuardsCheckStart {id: 8, url: "/first", urlAfterRedirects: UrlTree, state: RouterStateSnapshot}
GuardsCheckStart {id: 8, url: "/first", urlAfterRedirects: UrlTree, state: RouterStateSnapshot}
GuardsCheckEnd {id: 8, url: "/first", urlAfterRedirects: UrlTree, state: RouterStateSnapshot, shouldActivate: true}
GuardsCheckEnd {id: 8, url: "/first", urlAfterRedirects: UrlTree, state: RouterStateSnapshot, shouldActivate: true}
ResolveStart {id: 8, url: "/first", urlAfterRedirects: UrlTree, state: RouterStateSnapshot}
ResolveStart {id: 8, url: "/first", urlAfterRedirects: UrlTree, state: RouterStateSnapshot}
ResolveEnd {id: 8, url: "/first", urlAfterRedirects: UrlTree, state: RouterStateSnapshot}
ResolveEnd {id: 8, url: "/first", urlAfterRedirects: UrlTree, state: RouterStateSnapshot}
NavigationEnd {id: 8, url: "/first", urlAfterRedirects: "/first"}
NavigationEnd {id: 8, url: "/first", urlAfterRedirects: "/first"}
NavigationEnd {id: 8, url: "/first", urlAfterRedirects: "/first"}
NavigationStart {id: 9, url: "/auth"}
NavigationStart {id: 9, url: "/auth"}
NavigationStart {id: 9, url: "/auth"}
GuardsCheckStart {id: 9, url: "/auth", urlAfterRedirects: UrlTree, state: RouterStateSnapshot}
GuardsCheckStart {id: 9, url: "/auth", urlAfterRedirects: UrlTree, state: RouterStateSnapshot}
GuardsCheckStart {id: 9, url: "/auth", urlAfterRedirects: UrlTree, state: RouterStateSnapshot}
GuardsCheckEnd {id: 9, url: "/auth", urlAfterRedirects: UrlTree, state: RouterStateSnapshot, shouldActivate: true}
GuardsCheckEnd {id: 9, url: "/auth", urlAfterRedirects: UrlTree, state: RouterStateSnapshot, shouldActivate: true}
GuardsCheckEnd {id: 9, url: "/auth", urlAfterRedirects: UrlTree, state: RouterStateSnapshot, shouldActivate: true}
NavigationEnd {id: 9, url: "/auth", urlAfterRedirects: "/auth"}
NavigationEnd {id: 9, url: "/auth", urlAfterRedirects: "/auth"}
NavigationEnd {id: 9, url: "/auth", urlAfterRedirects: "/auth"}