parent
adc54302cb
commit
5279d06e88
@ -6,14 +6,14 @@
|
|||||||
* found in the LICENSE file at https://angular.io/license
|
* found in the LICENSE file at https://angular.io/license
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import {LocationChangeEvent, LocationChangeListener, PlatformLocation} from '@angular/common';
|
||||||
|
import {Injectable} from '@angular/core';
|
||||||
|
import {Subject} from 'rxjs/Subject';
|
||||||
import * as url from 'url';
|
import * as url from 'url';
|
||||||
|
|
||||||
import {Injectable} from '@angular/core';
|
|
||||||
import {LocationChangeEvent, LocationChangeListener, PlatformLocation} from '@angular/common';
|
|
||||||
import {getDOM} from './private_import_platform-browser';
|
|
||||||
import {scheduleMicroTask} from './facade/lang';
|
import {scheduleMicroTask} from './facade/lang';
|
||||||
|
import {getDOM} from './private_import_platform-browser';
|
||||||
|
|
||||||
import {Subject} from 'rxjs/Subject';
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -27,26 +27,20 @@ export class ServerPlatformLocation implements PlatformLocation {
|
|||||||
private _hash: string = '';
|
private _hash: string = '';
|
||||||
private _hashUpdate = new Subject<LocationChangeEvent>();
|
private _hashUpdate = new Subject<LocationChangeEvent>();
|
||||||
|
|
||||||
getBaseHrefFromDOM(): string {
|
getBaseHrefFromDOM(): string { return getDOM().getBaseHref(); }
|
||||||
return getDOM().getBaseHref();
|
|
||||||
}
|
|
||||||
|
|
||||||
onPopState(fn: LocationChangeListener): void {
|
onPopState(fn: LocationChangeListener): void {
|
||||||
// No-op: a state stack is not implemented, so
|
// No-op: a state stack is not implemented, so
|
||||||
// no events will ever come.
|
// no events will ever come.
|
||||||
}
|
}
|
||||||
|
|
||||||
onHashChange(fn: LocationChangeListener): void {
|
onHashChange(fn: LocationChangeListener): void { this._hashUpdate.subscribe(fn); }
|
||||||
this._hashUpdate.subscribe(fn);
|
|
||||||
}
|
|
||||||
|
|
||||||
get pathname(): string { return this._path; }
|
get pathname(): string { return this._path; }
|
||||||
get search(): string { return this._search; }
|
get search(): string { return this._search; }
|
||||||
get hash(): string { return this._hash; }
|
get hash(): string { return this._hash; }
|
||||||
|
|
||||||
get url(): string {
|
get url(): string { return `${this.pathname}${this.search}${this.hash}`; }
|
||||||
return `${this.pathname}${this.search}${this.hash}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
private setHash(value: string, oldUrl: string) {
|
private setHash(value: string, oldUrl: string) {
|
||||||
if (this._hash === value) {
|
if (this._hash === value) {
|
||||||
@ -55,8 +49,8 @@ export class ServerPlatformLocation implements PlatformLocation {
|
|||||||
}
|
}
|
||||||
this._hash = value;
|
this._hash = value;
|
||||||
const newUrl = this.url;
|
const newUrl = this.url;
|
||||||
scheduleMicroTask(() => this._hashUpdate.next(
|
scheduleMicroTask(
|
||||||
{type: 'hashchange', oldUrl, newUrl} as LocationChangeEvent));
|
() => this._hashUpdate.next({ type: 'hashchange', oldUrl, newUrl } as LocationChangeEvent));
|
||||||
}
|
}
|
||||||
|
|
||||||
replaceState(state: any, title: string, newUrl: string): void {
|
replaceState(state: any, title: string, newUrl: string): void {
|
||||||
@ -71,11 +65,7 @@ export class ServerPlatformLocation implements PlatformLocation {
|
|||||||
this.replaceState(state, title, newUrl);
|
this.replaceState(state, title, newUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
forward(): void {
|
forward(): void { throw new Error('Not implemented'); }
|
||||||
throw new Error('Not implemented');
|
|
||||||
}
|
|
||||||
|
|
||||||
back(): void {
|
back(): void { throw new Error('Not implemented'); }
|
||||||
throw new Error('Not implemented');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
* found in the LICENSE file at https://angular.io/license
|
* found in the LICENSE file at https://angular.io/license
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {Component, NgModule, destroyPlatform} from '@angular/core';
|
|
||||||
import {PlatformLocation} from '@angular/common';
|
import {PlatformLocation} from '@angular/common';
|
||||||
|
import {Component, NgModule, destroyPlatform} from '@angular/core';
|
||||||
import {async} from '@angular/core/testing';
|
import {async} from '@angular/core/testing';
|
||||||
import {getDOM} from '@angular/platform-browser/src/dom/dom_adapter';
|
import {getDOM} from '@angular/platform-browser/src/dom/dom_adapter';
|
||||||
import {ServerModule, platformDynamicServer} from '@angular/platform-server';
|
import {ServerModule, platformDynamicServer} from '@angular/platform-server';
|
||||||
@ -43,7 +43,7 @@ export function main() {
|
|||||||
expect(getDOM().getText(body)).toEqual('Works!');
|
expect(getDOM().getText(body)).toEqual('Works!');
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
|
|
||||||
describe('PlatformLocation', () => {
|
describe('PlatformLocation', () => {
|
||||||
it('is injectable', () => {
|
it('is injectable', () => {
|
||||||
const body = writeBody('<app></app>');
|
const body = writeBody('<app></app>');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user