如何在Angular 2路由中包含租户

时间:2016-08-15 10:18:27

标签: angular2-routing

我对Angular 2很陌生,对于我是否以正确的方式解决这个问题有点困惑。我正在编写一个多租户应用程序,我希望所有网址都以租户ID开头。例如:https://example.org/tenant-1/product/listhttps://example.org/tenant-2/product/list。这似乎是一个非常简单且解决得很好的问题,但我很难找到推荐的实现方法。

到目前为止,我已经创建了一个路由服务:

@Injectable()
export class RoutingService {
    public ClientId: string = null;

    constructor() {}

    getRoute(path: string): string {
        if (!this.ClientId) {
            // For deep-linking
            this.ClientId = window.location.pathname.split('/')[1];
        }

        return '/' + this.ClientId + path;
    }
}

向用户显示租户列表并选择一个。这会在ClientId上设置RoutingService

在每个组件中,我在构造函数中导入此RoutingService,HTML使用它来创建路径:

[routerLink]="[routingService.getRoute('/product/list')]

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

我和你一样处于类似情况,似乎从服务中提取它是目前由于组件封装/隔离的方式:

Angular 2: How to pass route parameters to subroute?

https://angular.io/docs/ts/latest/guide/router.html#!#route-parameters

由于租户是身份验证的一部分,因此我将其烘焙到我的AuthService中,而不是创建RouteService或RouteParamService。除了租户之外,在我的情况下,路由参数可以单独工作。