我想创建一个链接,供用户单击以验证其电子邮件。为此,我需要创建链接。如何将this.router
转换为字符串?我还需要检索用户的用户ID。如果不可能,我可以创建一个在相对路径中传递的字符串吗?
我尝试过:
let loginRoute = this.router.navigateByUrl("./login", {
queryParams: { key: data.id }
});
但是显然它不起作用,因为它.navigateByUrl
返回了布尔结果。
答案 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)
使用DOCUMENT
和Router
来创建带有参数的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)
}