Angular 角度2-在路由之间传递数据

Angular 角度2-在路由之间传递数据,angular,Angular,我的应用程序中有两条路线-/search/criteria和/search/results 在搜索条件组件中,用户填写搜索条件并单击搜索按钮。此按钮调用函数(onSearch),表单值作为输入传递。然后它将用户路由到搜索结果组件 onSearch(formValues) { console.log(formValues); this.router.navigate(['/search/results']); } 如何将formValues(包含用户输入的搜索条件的Javascript对象)

我的应用程序中有两条路线-/search/criteria和/search/results

在搜索条件组件中,用户填写搜索条件并单击搜索按钮。此按钮调用函数(onSearch),表单值作为输入传递。然后它将用户路由到搜索结果组件

onSearch(formValues) {
 console.log(formValues);
 this.router.navigate(['/search/results']);
}
如何将formValues(包含用户输入的搜索条件的Javascript对象)传递给搜索结果组件?在SearchResults组件中,我将执行搜索(使用服务)并在网格中向用户显示结果

因为搜索是在服务中执行的,所以我也可以从onSearch方法调用此服务。但问题是如何将结果传递给搜索结果组件(以便它可以在网格中呈现它们)


更好的方法是什么?

因为您的数据是一个对象,所以您可以使用本地存储或共享服务来传输它


您可以从这里了解如何使用共享服务:

我建议创建一个类似DataStorageService的服务,将所需数据存储在搜索条件组件中,然后从所需的服务中提取数据

您的服务可能如下所示,例如:

import { Injectable } from "@angular/core";

@Injectable()
export class DataStorageService {
    public storage: any;

    get isEmpty(): boolean {
        return this.storage === null || this.storage === undefined;
    }

    constructor() {}
}
当然,这是一个简单的示例,您需要决定如何在服务中存储数据。

可能的重复