Location
一个服务,应用可以用它来与浏览器的 URL 互动。
A service that applications can use to interact with a browser's URL.
class Location {
static normalizeQueryParams(params: string): string
static joinWithSlash(start: string, end: string): string
static stripTrailingSlash(url: string): string
path(includeHash: boolean = false): string
getState(): unknown
isCurrentPathEqualTo(path: string, query: string = ''): boolean
normalize(url: string): string
prepareExternalUrl(url: string): string
go(path: string, query: string = '', state: any = null): void
replaceState(path: string, query: string = '', state: any = null): void
forward(): void
back(): void
onUrlChange(fn: (url: string, state: unknown) => void)
subscribe(onNext: (value: PopStateEvent) => void, onThrow?: (exception: any) => void, onReturn?: () => void): SubscriptionLike
}
子类
说明
这取决于使用了哪个 LocationStrategy
,Location
可能会使用 URL 的路径进行持久化,也可能使用 URL 的哈希片段(#
)进行持久化。
Depending on the LocationStrategy
used, Location
will either persist to the URL's path or the URL's hash segment.
静态方法
给定 URL 参数字符串,如果需要则增加 '?' 前缀,否则原样返回。 Given a string of url parameters, prepend with | |||
参数
返回值为 URL 参数加上
|
给定 url 的两个部分,把它们连接(join)在一起,如有必要则添加一个斜杠。 Given 2 parts of a URL, join them with a slash if needed. | ||||||
参数
返回值给定的一组 URL 字符串,如果需要,就用斜杠合在一起。
|
如果 url 具有结尾斜杠,则移除它,否则原样返回。 该方法会查找第一个 If URL has a trailing slash, remove it, otherwise return the URL as is. The method looks for the first occurrence of either | |||
参数
返回值返回一个 URL 字符串,如果有结尾斜杠,则移除,否则原样返回。
|
方法
返回标准化之后的 URL 路径 Returns the normalized URL path. |
Returns the current value of the history.state object. |
参数没有参数。 返回值
|
对指定的路径进行标准化,并和当前的标准化路径进行比较。 Normalizes the given path and compares to the current normalized path. |
给出一个字符串形式的 URL,返回一个去掉末尾斜杠之后的 URL 路径。 Given a string representing a URL, returns the URL path after stripping the trailing slashes. |
给出一个字符串形式的 URL,返回一个平台相关的外部 URL 路径。 如果鬼畜的 URL 不使用前导斜杠( Given a string representing a URL, returns the platform-specific external URL path. If the given URL doesn't begin with a leading slash ( |
把浏览器的 URL 修改为指定 URL 的标准化版本,并往所属平台(如浏览器)的历史堆栈中追加一个新条目。 Changes the browsers URL to a normalized version of the given URL, and pushes a new item onto the platform's history. |
把浏览器的 URL 修改为指定 URL 的标准化版本,并替换所属平台(如浏览器)的历史堆栈的顶部条目。 Changes the browser's URL to a normalized version of the given URL, and replaces the top item on the platform's history stack. |
在所属平台(如浏览器)的历史堆栈中前进一步。 Navigates forward in the platform's history. |
参数没有参数。 返回值
|
在所属平台(如浏览器)的历史堆栈中后退一步。 Navigates back in the platform's history. |
参数没有参数。 返回值
|
Register URL change listeners. This API can be used to catch updates performed by the Angular framework. These are not detectible through "popstate" or "hashchange" events. |
订阅所属平台(如浏览器)的 Subscribe to the platform's | |||||||||
参数
返回值已订阅的事件。
|
使用说明
最好使用 Router
服务来触发路由变更。只有当你要在路由体系之外创建规范化 URL 或与之交互时才会用到 Location
。
It's better to use the Router
service to trigger route changes. Use Location
only if you need to interact with or create normalized URLs outside of routing.
Location
负责基于应用的基地址(base href)对 URL 进行标准化。 所谓标准化的 URL 就是一个从主机(host)开始算的绝对地址,包括应用的基地址,但不包括结尾的斜杠:
Location
is responsible for normalizing the URL against the application's base href. A normalized URL is absolute from the URL host, includes the application's base href, and has no trailing slash:
/my/app/user/123
是标准化的/my/app/user/123
is normalizedmy/app/user/123
不是标准化的my/app/user/123
is not normalized/my/app/user/123/
不是标准化的/my/app/user/123/
is not normalized
Example
- import {Location, LocationStrategy, PathLocationStrategy} from '@angular/common';
- import {Component} from '@angular/core';
-
- @Component({
- selector: 'path-location',
- providers: [Location, {provide: LocationStrategy, useClass: PathLocationStrategy}],
- template: `
- <h1>PathLocationStrategy</h1>
- Current URL is: <code>{{location.path()}}</code><br>
- Normalize: <code>/foo/bar/</code> is: <code>{{location.normalize('foo/bar')}}</code><br>
- `
- })
- export class PathLocationComponent {
- location: Location;
- constructor(location: Location) { this.location = location; }
- }