我有一个Angular应用,该应用应该能够根据用户创建新路线。假设用户'johndoe'注册,则该应用应创建一个路由:domain / johndoe。 当然/ johndoe路由应该提供有关特定用户的一些信息(例如名称,图像等)。 我使用Google Cloud Hosting和Firestore作为后端解决方案,到目前为止,我的进展是将Router注入到我的AppComponent构造函数中,然后在router.config上使用“ unshift”功能。这种工作有效,但是我必须将所有新路由(``用户'')存储到我的数据库中的单独文件中,然后每当有人导航到私有记号(例如domain / johndoe)时查询数据库... 我的问题是-是否有一个美观且易于维护的解决方案,其中考虑了我的后端配置。 如果我的问题听起来不太清楚,请不要判断我,只是问一下,在需要时我会做更多解释。
答案 0 :(得分:1)
您可以将userName作为路由参数传递。在路线数组
{ path: 'domain/:username', component: UserDetailsComponent }
在HTML中:
<a [routerLink]="['/domain', usernameVar]">
当某人单击链接时,它将路由到UserDetailsComponent。在组件中, 可以读取用户名。
username: string;
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.route.params.subscribe((params: Params) => {
this.username = param.username; // same as :username in route
});
// using username call the BE api and fetch data
}
有关路线参数的更多信息,请转到https://angular.io/guide/router#route-parameters
如果要基于授权路由到页面,请使用authGuards。 https://angular.io/guide/router#canactivate-requiring-authentication
希望这对您有帮助...