シナリオ:Angular2 Router - ベースHrefより前のルートを探していますか?
- サイトの大多数のためのルーティングんサイトの後ろにCMSがあります。
- SPAである サイトの特定のサブセクションを制御するAngular2アプリがあります。
- Angular2アプリは内蔵のAngular2 Routerを使用して、 ルーティングを行います。ただし、サイトのAngular2セクションの を取り戻そうとした場合を除き、正常に動作しています。 Angular2部について角/ルーターバージョン3.4.0
@角度/コアバージョン2.4.0(その他、HTTPなど)、@
<base href>
タグがパス場所に設定されていますAngular2がルーティングを引き継ぐことになっている(/ culture_code/subroute/angular_2_section/ルート) <base href='/*culture_code*/*subroute*/*angular_2_section*/'>
platfor mBrowserDynamicバインディングには、<base href>
タグと同じURLを設定したAPP_BASE_HREFの提供もあります(両方が必要な場合はわかりませんが、設定されていることを確認したい)。 :
問題がculture_code/subroute/cms_handled_routeバック/ にユーザをもたらすであろう、ブラウザに戻ってクリックすると、角からルートモジュールが不明な経路(パスとして検出されることです'**')、ルーティングのベースhrefがそのURLで蹴られてはならないので、ルータからそれを壊す方法がわかりません。私はそれがその時点でバックCMSのルーティングに行きたいので、私は(場所を使用してみましたcms_handled_routeはangular_2_sectionと同じレベルにあると<base href>
はangular_2_section
後に開始する必要があります@ angle/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;
}
}
ここに何か不足していますか?不明なルート上の角度ルータに簡単に言えることはありますか?何もしないでください。
ありがとうございました!