2

我有一个看起来像这样的组件

<div class="animal">
  <a routerLink="/animal/{{animal.id}}">
  <div>
    ...
  </div>
  </a>
</div>

它从父组件获取animal对象,这只是一个子组件列表。

@Input() animal;

当我点击它时,我正在移动到另一个组件,我想在其中显示这个点击animal对象的一些属性。

我想创建一个服务来存储这个对象,但问题是我不知道如何只获取单击的对象而不是列表中的每个对象。

所有的帮助将不胜感激。

4

2 回答 2

2

您可以使用ActivatedRoutein 在路由组件中捕获参数angular

您的路由路径:

const routes : Routes = [
  { 
    // Other routes
  },
  {
     path:'animal/:id'
     component : AnimalDetailsComponent
  }
]

动物细节.component.ts

constructor(private route : ActivatedRoute) {} 

ngOnInit(){
  this.route.params.subscribe((params)=>{
     console.log(params['id'])
  })
}
于 2018-10-31T11:33:13.300 回答
0

尝试使用 resolver Route Resolver Service - 您可以在路由加载之前执行一些操作

 {
    path: '',
    component: Component,
    resolve: { service: Service },
  },

export class Service implements Resolve<object | string> {

  constructor() {
    }

  resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<object | string> | Promise<object | string>  {
        return {};
    }

在您的 onInit 中,您可以通过在组件构造函数中注入 ActivatedRoute 服务来读取数据,如下所示

constructor(private _activatedRoute: ActivatedRoute) {
    }

Onint 中的代码 -this.variable = this._activatedRoute.snapshot.data["service"];

于 2018-10-31T11:50:02.653 回答