Я внедрил простой LocationStrategy
, который отключает изменения панели браузера, используемые другими стратегиями запаса. Я хочу создать несколько небольших приложений, которые должны быть подключены к произвольным веб-страницам, где местоположение браузера не должно быть затронуто, хотя требуется какая-то навигация. Это хорошо работает с новой стратегией. Единственное, чего сейчас нет, это back()
-функция для навигации. Очевидно, я больше не могу позвонить window.back()
, но я также не нашел никакого внутреннего метода для вызова, читая угловые источники. Наверное, я мог бы напрямую позвонить LocationStrategy.back()
, но затем мне все еще нужно каким-то образом сделать обновление маршрутизатора текущим. Есть ли какое-то событие, которое я мог бы запустить, или что-то еще, чтобы заархивировать обновление?AngularJS 2 стратегия скрытого местоположения назад навигация
Это текущая реализация моей стратегии местоположения:
import { Injectable, Inject, Optional, platform } from 'angular2/core';
import { LocationStrategy, PlatformLocation, APP_BASE_HREF, } from 'angular2/router';
import { joinWithSlash, normalizeQueryParams } from 'angular2/src/router/location_strategy';
import { UrlChangeListener } from 'angular2/src/router/location/platform_location';
import { isPresent } from 'angular2/src/facade/lang';
@Injectable()
export class HiddenLocationStrategy extends LocationStrategy {
private _baseHref: string = '';
private pathHistory: string[] = [];
private poppedPathHistory: string[] = [];
constructor(private _platformLocation: PlatformLocation,
@Optional() @Inject(APP_BASE_HREF) _baseHref?: string) {
super();
if (isPresent(_baseHref)) {
this._baseHref = _baseHref;
}
}
onPopState(fn: UrlChangeListener): void {
}
getBaseHref(): string { return this._baseHref }
path(): string {
return this.pathHistory.length > 0 ? this.pathHistory[this.pathHistory.length - 1] : '';
}
prepareExternalUrl(internal: string): string {
var url = joinWithSlash(this._baseHref, internal);
return url;
}
pushState(state: any, title: string, path: string, queryParams: string) {
this.pathHistory.push(path);
}
replaceState(state: any, title: string, path: string, queryParams: string) {
}
forward(): void { this.pathHistory.push(this.poppedPathHistory.pop()); }
back(): void { this.poppedPathHistory.push(this.pathHistory.pop()); }
}
Способ активации 'HashLocationStrategy' должны включать' {useHash: истинный} 'аргумент, когда самозагрузку модуля маршрутизации. Но как вы активировали эту стратегию пользовательского размещения? –