parent
8296dcec09
commit
011fab37af
@ -1,6 +1,7 @@
|
|||||||
import {LocationStrategy} from './location_strategy';
|
import {LocationStrategy} from './location_strategy';
|
||||||
import {StringWrapper, isPresent, CONST_EXPR} from 'angular2/src/facade/lang';
|
import {StringWrapper, isPresent, CONST_EXPR} from 'angular2/src/facade/lang';
|
||||||
import {EventEmitter, ObservableWrapper} from 'angular2/src/facade/async';
|
import {EventEmitter, ObservableWrapper} from 'angular2/src/facade/async';
|
||||||
|
import {BaseException, isBlank} from 'angular2/src/facade/lang';
|
||||||
import {OpaqueToken, Injectable, Optional, Inject} from 'angular2/di';
|
import {OpaqueToken, Injectable, Optional, Inject} from 'angular2/di';
|
||||||
|
|
||||||
export const appBaseHrefToken: OpaqueToken = CONST_EXPR(new OpaqueToken('locationHrefToken'));
|
export const appBaseHrefToken: OpaqueToken = CONST_EXPR(new OpaqueToken('locationHrefToken'));
|
||||||
@ -22,8 +23,14 @@ export class Location {
|
|||||||
|
|
||||||
constructor(public _platformStrategy: LocationStrategy,
|
constructor(public _platformStrategy: LocationStrategy,
|
||||||
@Optional() @Inject(appBaseHrefToken) href?: string) {
|
@Optional() @Inject(appBaseHrefToken) href?: string) {
|
||||||
this._baseHref = stripTrailingSlash(
|
var browserBaseHref = isPresent(href) ? href : this._platformStrategy.getBaseHref();
|
||||||
stripIndexHtml(isPresent(href) ? href : this._platformStrategy.getBaseHref()));
|
|
||||||
|
if (isBlank(browserBaseHref)) {
|
||||||
|
throw new BaseException(
|
||||||
|
`No base href set. Either provide a binding to "appBaseHrefToken" or add a base element.`);
|
||||||
|
}
|
||||||
|
|
||||||
|
this._baseHref = stripTrailingSlash(stripIndexHtml(browserBaseHref));
|
||||||
this._platformStrategy.onPopState((_) => this._onPopState(_));
|
this._platformStrategy.onPopState((_) => this._onPopState(_));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,5 +75,13 @@ export function main() {
|
|||||||
location.go('user/btford');
|
location.go('user/btford');
|
||||||
expect(locationStrategy.path()).toEqual('/my/custom/href/user/btford');
|
expect(locationStrategy.path()).toEqual('/my/custom/href/user/btford');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should throw when no base href is provided', () => {
|
||||||
|
var locationStrategy = new MockLocationStrategy();
|
||||||
|
locationStrategy.internalBaseHref = null;
|
||||||
|
expect(() => new Location(locationStrategy))
|
||||||
|
.toThrowError(
|
||||||
|
`No base href set. Either provide a binding to "appBaseHrefToken" or add a base element.`);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user