Angular 7 中的 $location.search() 等效项

Posted

技术标签:

【中文标题】Angular 7 中的 $location.search() 等效项【英文标题】:$location.search() equivalent in Angular 7 【发布时间】:2019-07-13 08:01:42 【问题描述】:

我正在将 Angular JS 迁移到 Angular 7。我正在查看此代码并尝试在 Angular 7 中实现。

在服务中注入$location,以下方法重置和设置查询参数。

function resetAllOptions() 
            // Clears query params
            $location.search('');



function setQueryParameters() 
    // Sets query parameters
            $location.search(
                searchType: searchType,
                searchField: searchField,
                searchValue: searchValue,
                searchValueTwo: searchValueTwo,
                searchValueThree: searchValueThree
            );

如何在 Angular 7 中实现这一点?

【问题讨论】:

见angular.io/guide/router 【参考方案1】:

参数在 Angular v7 中完全不同,因为它们是路由的一部分。因此,没有与您想要完成的直接等效的行对行。

在 Angular v2+ 中,有三种不同类型的参数,所以第一步是定义你想要的类型。

这是一篇详细描述不同类型的帖子:

Send data through routing paths in Angular

假设您想坚持使用查询参数:

您可以像这样在 html 中设置它们:

          <a [routerLink]="[product.id]"
             [queryParams]="filterBy: listFilter, showImage: showImage">
             product.productName 
          </a>

或者在这样的代码中:

this.router.navigate([`/search`],
              queryParams: 
                     searchType: searchType,
                     searchField: searchField, // ...
               );

【讨论】:

请注意,您可以使用 angular.io/api/router/Router#navigateByUrl 进行命令式导航

以上是关于Angular 7 中的 $location.search() 等效项的主要内容,如果未能解决你的问题,请参考以下文章

Angular 7:拦截器中的等待函数

Angular 7 应用程序中的 MongoDB Stitch

如何通过模板驱动形式验证 Angular 7 中的下拉列表

为 Angular 7 中的特定组件生成单独的构建文件

Angular 7.0.1 中的 Web Worker 设置

使用来自本地 json 文件的 html 中的数据 - typescript, angular 7