从以前的组件 Angular 中选择列表中的对象

Posted

技术标签:

【中文标题】从以前的组件 Angular 中选择列表中的对象【英文标题】:Select object in a list from previous component Angular 【发布时间】:2020-11-14 09:25:13 【问题描述】:

我有一个details.component 和一个list.component。我的应用是关于汽车的。

您可以在details component 中打开一辆汽车以查看它的详细信息。按下返回按钮(集成返回按钮)返回list component 后,应该选择/突出显示您之前查看的汽车。

列表组件是所有汽车的大列表。我正在使用引导程序。我猜从细节组件的汽车必须过度使用服务?或者有什么简单的解决办法?

我是 Angular 的初学者。我将不胜感激任何类型的例子。非常感谢

更新:

list.component

carId$ = this.routerQuery.selectParams<number>('carId').pipe(
    distinctUntilChanged(),
    untilDestroyed(this),
    filter(carId => +carId > 0)
  );

constructor(carService)

this.carId$.subscribe(carid => 
              this.carService.getCarById(+carid);
              console.log(carid)
            )

如何在 html 文件中突出显示/选择最后查看的汽车?

【问题讨论】:

是的,您应该使用服务来执行此类操作。我写了一个关于创建服务的答案。在服务中设置 lastSelectedCar 并在列表组件中观察它(订阅它),然后在你的列表中查找 lastSelected 汽车并设置选择的样式。这里:***.com/questions/51343636/… 和这里 ***.com/questions/57355066/…。检查两个帖子,他们应该引导你朝着正确的方向前进。问候 非常感谢。你能提供一些示例代码吗?我还想不通 如果你提供一些关于你的组件代码的信息,我会为列表和详细视图提供一些信息 每辆车都有一个ID。它显示在 URL 的末尾。它是 carId(唯一)。当我在 list 组件上打开汽车时,我会进入 detail 组件。在我按下我实现的后退按钮后,我回到列表组件。现在应该突出显示最近查看/打开的汽车。因此,您可以更好地了解您最近查看的列表对象。 好,我给你看个服务方式 【参考方案1】:

我为你创建了一个完整的示例 stackblitz。

我创建了两个组件:cars.componentdetail.component 我创建了一个car.service.ts,它可能通过后端处理选择和模拟检索汽车。

我从 url 获取 id 以通过后端调用检索数据。

这里是堆栈闪电战: Cars selection service example

【讨论】:

对伴侣有帮助吗? 是的,谢谢伙计。但是,我不得不稍微编辑您的解决方案。我更新了我的问题。你能看看吗?非常感谢 对我来说没有区别。您有一项服务,您可以在我的解决方案中设置最后选择的汽车。然后,您只需从模板中的服务中绑定您选择的汽车。问候【参考方案2】:

为此,您可以使用带有 routerLinkActiverouterLinkActiveOptions 属性的锚标记。您的每个 CarList 都应该用锚元素包裹。单击您的元素更改类名。

类似的,

<a class="nav-link" routerLink="" routerLinkActive="visited" routerLinkActiveOptions="exact:true">Benz</a>

你的css代码可以是这样的,

.visited
    color:red;

参考: Change color of selected link in angular 4

【讨论】:

以上是关于从以前的组件 Angular 中选择列表中的对象的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Angular 7 的组件列表中预先选择默认项

将对象从一个组件移动到Angular5中的同级组件

Angular 6 无法从提供的对象中自动选择/绑定下拉列表值

Angular 4 - 在选择列表中使用对象作为选项值

如何根据Angular中一个组件中的click事件更改其他组件中的数据?

使用Angular2中的接口将对象推送到新数组中