将 json 从一个组件发送到另一个组件,而不会在目标组件的 url 中看到

yavg

我正在尝试将 json 从 componentA 发送到 componentB。问题是 json 出现在 url 中。我怎样才能让json不出现?

路由

const appRoutes: Routes = [
  {path: 'componentA', component: componentA},
  {path: 'componentB', component: componentA, data : {}},
  {path: '**', component: NotFoundComponent}
];

模板组件A

<a *ngFor="let item aArray" (click)="fn_sendJson(item)">Send jSON</a>

组件 .ts

this.aArray={"name":"pablo","countrys":["colombia","perú"],"lastname":"ramirez"}
.
.
fn_sendJson(item:any){
 this.router.navigate(['componentB', {"data": JSON.stringify(item)}]);
}

组件 .ts

constructor(
 private router : Router,
 private route: ActivatedRoute
 ) {
 sub:any;
 jsonReceived:any
 . 
 .
 this.sub = this.route.params
 .subscribe(v => this.jsonReceived =JSON.parse(v.data));

我还没有找到避免将原始json转换为字符串的方法,我想知道是否有像json这样的有效发送方法,并且不需要它出现在url中就可以获取它。谢谢

阿西姆哈什米

当您想将一些复杂的数据从一个组件发送到另一个组件时,通过 url 发送它通常不是一个好习惯。您可以做的是创建这样的服务:

共享服务.ts

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

@Injectable()
export class SharingService {
  private sharingObject: any;
  constructor() { }

  get sharingValue() {
    return this.sharingObject
  }

  set sharingValue(obj) {
    this.sharingObject = obj;
  }
}

现在您需要在您的两个组件中注入该服务,以便在它们之间共享数据。

第一个组件将如下所示:

first.component.ts

import { Component, OnInit } from '@angular/core';
import {SharingService} from '../sharing.service';
import { Router } from '@angular/router';

@Component({
  selector: 'app-first',
  templateUrl: './first.component.html',
  styleUrls: ['./first.component.css']
})
export class FirstComponent implements OnInit {
  myJson: any;
  constructor(private sharingService: SharingService, private router: Router) {
    this.myJson = {
      a: "hello",
      b: "World"
    }
  }

  ngOnInit() {
  }

  send() {
    this.sharingService.sharingValue = this.myJson;
    this.router.navigate(['/second'])
  }

}

现在在您的第二个组件中,您可以访问由第一个组件设置的值

第二个组件.ts

import { Component, OnInit } from '@angular/core';
import {SharingService} from '../sharing.service';

@Component({
  selector: 'app-second',
  templateUrl: './second.component.html',
  styleUrls: ['./second.component.css']
})
export class SecondComponent implements OnInit {
  myJson: any;
  constructor(private sharingService: SharingService) { }

  ngOnInit() {
   this.myJson = this.sharingService.sharingValue;
  }

}

这是这种方法的工作 stacklitz演示

希望能帮助到你 :)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将状态从子组件发送到React中的另一个组件

将事件发送到同一容器中的另一个组件的最佳实践?

将json对象的一个组件传递给另一个vue.js

将表单数据以JSON格式发送到另一个页面

将JSON数据从App组件传递到Angular 6中的另一个组件

使用Angular 6使用服务将JSON文件从一个组件传递到另一个组件

如何将道具从一个组件发送到渲染之外的另一个组件?

如何将消耗的API响应发送到另一个组件?

将数据从一个组件推送到另一个组件

ajax,json将数据从一个php文件发送到另一个文件,然后将数据发送回去

获取URL的JSON值并发送到另一个意图

灰烬:将动作从一个组件发送到另一组件

将字符串从一个活动发送到另一个活动,并将其用作AsyncTask中的url参数

如何在角度2中单击按钮时将数据从一个组件发送到另一个组件

使用Django URL将发布的信息发送到另一个页面

以角度 2 将整个对象从一个组件发送到另一个组件

将变量发送到另一个组件(可观察的)

如何在路由到该组件时将 vuejs 数组发送到另一个组件而不会丢失数组数据?

将参数发送到另一个组件

如何将图像 url 作为道具传递给另一个组件?

当 url 调用第二个组件时,如何将 props 从当前组件传递到另一个组件?

提交时:将数据从一个组件发送到另一个组件

通过 angular 路由将数据发送到另一个组件

React+ 将整个状态对象发送到另一个组件

如何将 React hook 的 setter 发送到另一个组件

将参数从 ts 文件发送到另一个 @Input 组件

如何将缓冲图像作为 JSON 发送到另一个 API?

使用 onClick 将状态/道具发送到 React 中的另一个组件

我如何将图像从一个角度组件发送到另一个并显示它