在两个角度2组件打字稿文件之间传递值

时间:2017-07-26 18:10:09

标签: javascript angular typescript angular2-template angular2-services

我有两个不是父组件的组件,它们是子组件,但我需要将数据从组件A传递到组件B. 例: 组件A.ts有一个数据数组 例如:

my data [
   {'name':'some a','email':'some a@gmail.com','grades':{}},
   {'name':'some b','email':'some b@gmail.com','grades':{}}
  ]

需要将我的数据传递给组件B.ts

2 个答案:

答案 0 :(得分:1)

如果他们没有父/子关系,最好的方法是在A和B的构造函数中共享服务injected

组件A:

constructor(private sharingService: SharingService) { }

public myArray = [];

func() {
    ...
    this.sharingService.save(this.myArray);
}

服务:

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

@Injectable()
constructor() {}

private array = [];

save(array) {
    this.array = array;
}

fetch() {
    return this.array;
}

组件B:

constructor(private sharingService: SharingService) { }

public yourArray = this.sharingService.fetch();

There's a good tutorial on services and component interaction on the Angular site

答案 1 :(得分:0)

我同意@Lying Cake的答案。您应该使用该服务以便在两个独立组件之间共享数据。 您面临的未定义问题是因为您在构造函数中调用了fetch方法。你还没有在这里定义数组值:private array。所以,它给出了undefined。定义初始值或从构造函数中删除fetch方法,并仅在数组值不是undefined时调用。