2016-03-22 24 views
0

1 ana bileşenim var. Bu bileşenin içinde, sunucudan veri almak için WebSockets kullanıyorum. İçinde bir dizi alan bulunan bir nesne alıyorum. Örneğin, dosya sayısı 0 ile 10 arasında olabilir. Bir nesne aldığımda, tüm alanları almak için forEach() kullanıyorum. Her alan için ben böyle bir bileşeni init gerekir:Anakart veriyi çoklu bileşenlerle paylaşın Angular 2

self.dcl.loadIntoLocation(StreamComponent, self.elementRef, 'stream');

zaten var bir nesnenin geçerli alan için bir bileşenin bir kopyası i yeni alınan verilerle güncellemek gerekirse manzara içinde. Benim asıl sorum, WebSockets'tan oluşturulan bileşene veri iletmeyi bilmiyorum. Onu oluşturabilir ve başlatabilirim, ama veriyi ona nasıl aktaracağımı asla boş vermem. Herhangi bir fikir ?

cevap

1

Sen yöntemi tarafından döndürülen sözünü kaldıraç deneyebilirsiniz:

self.dcl.loadIntoLocation(
    StreamComponent, self.elementRef, 'stream').then((compRef:ComponentRef) => { 
    compRef.instance.someAttr = something; 
}); 

Bu söz yeni oluşturulan bileşenin örneğini almak ve özelliklerine verileri ayarlamanızı sağlar (örneğin, web soket) .

+0

Bu kodu sınayın. (Bu tabloyu kapaBu tabloyu aç }); ' Test etmek için 'name' değişkenini kodlarım. – Edward

+1

Aslında bunu kullanmalısınız: 'self.dcl.loadIntoLocation (StreamComponent, self.elementRef, 'stream'), sonra ((compRef: ComponentRef) => {compRef.instance.name = 'name'}; .log (compRef);}); '. Aksi takdirde, bileşen örneğinin kendisini geçersiz kılarsınız ... –