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
persists to the URL's path or the URL's hash segment.
静态属性
属性 | 说明 |
---|---|
static normalizeQueryParams: (params: string) => string | 给定 URL 参数字符串,如果需要则增加 '?' 前缀,否则原样返回。 Normalizes URL parameters by prepending with |
static joinWithSlash: (start: string, end: string) => string | 给定 url 的两个部分,把它们连接(join)在一起,如有必要则添加一个斜杠。 Joins two parts of a URL with a slash if needed. |
static stripTrailingSlash: (url: string) => string | 如果 url 具有结尾斜杠,则移除它,否则原样返回。 该方法会查找第一个 Removes a trailing slash from a URL string if needed. Looks for the first occurrence of either |
方法
返回标准化之后的 URL 路径 Normalizes the URL path for this location. |
Reports the current state of the location history. |
参数没有参数。 返回值
|
对指定的路径进行标准化,并和当前的标准化路径进行比较。 Normalizes the given path and compares to the current normalized path. |
给出一个字符串形式的 URL,返回一个去掉末尾斜杠之后的 URL 路径。 Normalizes a URL path by stripping any trailing slashes. |
Normalizes an external URL path. If the given URL doesn't begin with a leading slash ( |
把浏览器的 URL 修改为指定 URL 的标准化版本,并往所属平台(如浏览器)的历史堆栈中追加一个新条目。 Changes the browser's URL to a normalized version of a 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. |
参数没有参数。 返回值
|
Registers a URL change listener. Use to catch updates performed by the Angular framework that are not detectible through "popstate" or "hashchange" events. |
订阅所属平台(如浏览器)的 Subscribes to the platform's | |||||||||
参数
返回值已订阅的事件。
|
使用说明
最好使用 Router
服务来触发路由变更。只有当你要在路由体系之外创建规范化 URL 或与之交互时才会用到 Location
。
It's better to use the Router#navigate
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;
}
}