javascript - İki Angular 2 bileşen TypeScript dosyası arasında değer aktarma


Benim iki bileşenim var, bunlar ana bileşenler değil ve bunlar alt bileşenler ama ben veriyi bileşen A'dan bileşen B'ye geçirmek istiyorum. örnek: component A.ts bir veri dizisine sahip örnek:

my data [
   {'name':'some a','email':'some [email ','grades':{}},
   {'name':'some b','email':'some [email ','grades':{}}
  ]

verilerimi B.ts bileşenine aktarmam gerekiyor

Cevap #1

Eğer bir ebeveyn/çocuk ilişkileri yoksa, en iyi yol A ve B'nin yapıcılarına enjekte edilen paylaşılan bir servistir.

bileşen A:

constructor(private sharingService: SharingService) { }

public myArray = [];

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

Hizmet :

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

@Injectable()
constructor() {}

private array = [];

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

fetch() {
    return this.array;
}

bileşen B:

constructor(private sharingService: SharingService) { }

public yourArray = this.sharingService.fetch();

Angular sitesinde servisler ve bileşen etkileşimi hakkında iyi bir eğitim var.

Cevap #2

@Lying Cake’in cevabına katılıyorum. İki bağımsız bileşen arasında veri paylaşmak için servisi kullanmalısınız. Karşılaştığınız undefined sorunu, fetch metodunu constructor içerisinde çağırmanızdan kaynaklanıyor. Ayrıca burada dizi değerini tanımlamadınız: private array. Bu yüzden undefined veriyor. Ya başlangıç değerini tanımlayın ya da fetch metodunu constructor’dan kaldırıp yalnızca dizi değeri undefined olmadığında çağırın.