我们可以在 ionic4 中使用 queryParams 吗?

Can we use queryParams in ionic4?

我们已将 queryParams 用于 angular 个项目。我们可以在 ionic 项目中使用 queryParams 吗? 有任何副作用或安全问题吗?

您可以使用 queryParams,但不推荐使用它,因为您将作为路由器 link 的一部分发送值。这也意味着您仅限于字符串,并且每次发送数据时都需要对对象进行字符串化 (JSON.stringify()) 和解析。

更好的选择是使用 Extras State:

let navigationExtras: NavigationExtras = {
      state: {
        userData: this.user
      }
    };
    this.router.navigate(['my-page'], navigationExtras);

在MyPage中,通过在构造函数中注入Router从State获取数据:

this.data = this.router.getCurrentNavigation().extras.state.userData;

使用服务: 此外,您可以创建一个具有 getter 和 setter 的服务,您可以在导航前使用它来保存数据完成导航后取回:

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

@Injectable({
  providedIn: 'root'
})
export class DataService {

  private data = [];

  constructor() { }

  setData(id, data) {
    this.data[id] = data;
  }

  getData(id) {
    return this.data[id];
  }
} 

this.router.navigate(['your-page-name-here'], 参数);