我如何字符串相对路径

时间:2019-05-16 03:41:25

标签: angular typescript

我想创建一个链接,供用户单击以验证其电子邮件。为此,我需要创建链接。如何将this.router转换为字符串?我还需要检索用户的用户ID。如果不可能,我可以创建一个在相对路径中传递的字符串吗?

我尝试过:

let loginRoute = this.router.navigateByUrl("./login", {
      queryParams: { key: data.id }
});

但是显然它不起作用,因为它.navigateByUrl返回了布尔结果。

2 个答案:

答案 0 :(得分:1)

 constructor(private route: ActivatedRoute) {}

  ngOnInit() {
    this.sub = this.route.params.subscribe(params => {
       this.id = +params['id'];
    });

这可以为您获取查询参数中的ID。

如果您想要域名,请执行此操作-

const parsedUrl = new URL(window.location.href);
const baseUrl = parsedUrl.origin;
console.log(baseUrl);

答案 1 :(得分:1)

使用DOCUMENTRouter来创建带有参数的URL字符串。

将文档从platform-browser和Router形式@ angular / router导入组件

import { DOCUMENT } from '@angular/platform-browser';

import { Router } from '@angular/router';

初始化构造函数

  constructor(
    private router: Router,
    @Inject(DOCUMENT) private document: any
  ) {}

使用URL

  ngOnInit() {
    let domain = this.document.location.hostname;
    this.href = this.router.url;
    console.log(domain+this.href)
  }

工作示例-Stackblitz代码在一个子组件中


------------评论后编辑-------------

使用DOCUMENT获取域/主​​机名和该域的concat参数。

import { DOCUMENT } from '@angular/platform-browser';
import {ActivatedRoute} from '@angular/router';
constructor(
        @Inject(DOCUMENT) private document: any,
        private route:ActivatedRoute

      ) {}

ngOnInit() {
        let domain = this.document.location.hostname;
        let userId = this.route.snapshot.params['userId'];
        console.log(domain+'?user='+userId)
      }