如何找到 Angular 应用程序的完整 URL,包括命名网点?

How to find out full URL for Angular application including named outlets?

我一直在检查两个 Router and RouterOutlet 以查看是否可以找出整个 URL 行是什么。不过,我看不到任何适用的内容。

最理想的情况是,我希望它以拆分形式显示,这意味着如果我浏览器中的 URL 显示:

http://localhost:2006/some(aa:aha,bb:bha)

我会得到一个具有如下字段的对象:

...xxx.url.path = some
...xxx.url.outlets[0] = {name:"aa", path: "aha"}
...xxx.url.outlets[1] = {name:"bb", path: "bha"}
...xxx.url.server = "localhost"
...xxx.url.port = 2006

不过,即使像下面这样的复合版本也可以,因为我可以用一些字符串魔术自己将它拆分。

...xxx.url.path = some(aa:aha,bb:bha)

我该怎么做?谷歌搜索时我错过了哪些键?

您可以通过路由器 class 或位置 class 访问当前 url。

import { Router } from "@angular/router";
constructor(private router: Router) { }

console.log(this.router.url);

import { Location } from "@angular/common";
constructor(private location: Location) { }

console.log(this.location.path());

请注意,路由器会重定向用户,因此根据您的配置,您可能必须订阅 NavigationEnd 事件以确保用户被重定向。

import { Event, NavigationEnd } from "@angular/router";

this.router.events.subscribe((event: Event) => { 
  if (event instanceof NavigationEnd){ 
    // do your stuff here 
  } 
});