场景:Angular2路由器 - 寻找Base Href之前的路线?
- 有一个CMS,它的路由为广大 站点的站点后面。
- 有一个Angular2应用程序控制着SPA的 网站的某个子部分。
- Angular2应用程序使用内置的Angular2路由器来执行 工作正常,除非尝试返回网站的Angular2部分的 。
- @角/芯版本2.4.0(和其他人,HTTP等),@角/路由器版本3.4.0
对于Angular2段,<base href>
标签被设置为路径,其中所述Angular2应该接管路由(/ culture_code/subroute/angular_2_section/路线)
<base href='/*culture_code*/*subroute*/*angular_2_section*/'>
的platfor mBrowserDynamic绑定也有APP_BASE_HREF提供了与<base href>
标签(我不确定是否有必要同时拥有但我想确保它已设置)相同的url。
的问题是,在浏览器中,这将使用户返回到/ culture_code点击回来时/subroute/cms_handled_route,从角路径模块被检测它作为未知路由(路径: '**'),然后我不知道如何将它从路由器中分离出来,因为路由的基础href不应该在该URL中踢in。该cms_handled_route处于同一水平angular_2_section和<base href>
因为我希望它回到CMS路由在这一点上应该只后angular_2_section
开始,我一直在使用地点(试过from @ angular/common)做一个back(),但它似乎仍然卡住。我试图通过在访问未知路由时将它置于CanLoad Guard中的location.back(),但我确信必须有更好的方法来做到这一点。
import { Injectable } from '@angular/core';
import { Route, CanActivate, CanActivateChild, CanLoad, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { Location } from "@angular/common";
import { LoggerService } from '@shared2/services/logger.service';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class RouteUnknownGuard implements CanLoad {
constructor(private location: Location, private loggerService: LoggerService) {
}
canLoad(route: Route): Observable<boolean> | boolean {
this.loggerService.log('Route Unknown - Change to Location routing: ' + this.location.path);
this.location.back();
return false;
}
}
有什么我在这里失踪?有没有一种简单的方式对未知路由上的角路由器说,不要做任何事情?
谢谢!