場景: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;
}
}
有什麼我在這裏失蹤?有沒有一種簡單的方式對未知路由上的角路由器說,不要做任何事情?
謝謝!