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.
