角度 - 多级路由

时间:2018-03-07 16:10:37

标签: html5 angular typescript angular2-routing

我想做多路由路由:

对于每个lvl,我有一个视图,但动态更改数据。

enter image description here

我该怎么做并让我的网址像:

host.com/laptop/laptop-list/apple/234-product

不像我在下面:

host.com/laptops/1/2/12-product

在组件之间传递ID是否正确?或者我必须为所有这些创建数据库服务,如果是,我如何使用多个API

host.com/api/laptops

host.com/api/laptopProducts 等等

...

我这样做了,(它正在工作)但是它传递了我的身份证。

<a [routerLink]="laptop.id" *ngFor="let laptop of laptops">

component.ts

id = 0;

 constructor(private database: DatabaseService, private activeRoute: ActivatedRoute) { 
    this.activeRoute.params.subscribe(params => {
      this.id = parseInt(params["id"]);
    });
  }

component.html

<div *ngFor="let laptopProduct of laptopProducts">
            <div *ngIf="laptopProduct.laptopID === id">
                {{laptopProduct.name}}
            </div>
        </div>

一切正常但我想在网址中使用名称而不是ID

1 个答案:

答案 0 :(得分:0)

在您的组件中创建一个词典:

var dict = []; // create an empty array
id;

constructor(private database: DatabaseService, private activeRoute: 
ActivatedRoute) { 

dict.push({
  key:   "1",
  value: "Apple"
});

this.activeRoute.params.subscribe(params => {
  this.id = dict[parseInt(params["id"])].value;
});
}

但是,您不应该使用参数来获取此ID。使用服务并在您的组件之间共享ID。