2017-07-13 30 views
7

Genellikle düzenin nasıl yapıldığını görmek için ama çalışma bileşenleri içerir görmek için bir Angular 4 şablon aldım, onlar çoğunlukla menü için, çoğunlukla dış çerçeveyi kontrol, değişen stilleri, uygulama bileşeninde bir ayar ayarları var fark ettim.Açısal 4 forwardRef?

constructor(@Inject(forwardRef(() => AppComponent)) public app:AppComponent) {} 

ve böyle bir şey arayacak: menü bileşeni ve kullandıkları AppComponent ayarlarıyla ile iletişim birkaç diğer bileşenler ise

aşağıdaki this.app.darkMenu = menü bileşeninde gerçek

Bu geçerli tasarım iyi mi, kötü mü, eski mi? App veya ana bileşenle böyle iletişim kurabileceğinizi bile bilmiyordum? Bunun Gözlemlenebilir Bir Konu veya EventEmitter olması mı yoksa forwardRef ile iletişim kurması kabul edilebilir mi? Bu, .NET'te benzer. Bu, MasterPage ile this.master.whateverproperty kullanarak iletişim kurabildiğim gibi görünüyor.

İleriye doğru çalışmayı seviyorum ama kullanmam mı yoksa farklı şekilde iletişim kurmam mı değiştirdiğimi bilmiyorum ??

+0

Zaten bir cevabınız olduğunu görüyorum, ama bunu paylaşacağımı düşündüm: https://hackernoon.com/what-is-forwardref-in-angular-and-why-we-need-it -6ecefb417d48 – Alex

+0

Teşekkür ederim ...... – Fab

+0

[Angular'de forwardRef' nedir ve neden buna ihtiyacımız var] okuyabilirsiniz (https://blog.angularindepth.com/what-is-forwardref-in-angular- ve-why-we-need-it-6ecefb417d48) konuyu ayrıntılarıyla açıklıyor –

cevap

4

forwardRef iletişim için değil. forwardRef, yalnızca aynı dosyada daha aşağı bir şekilde bildirilen bir tür adını kullanabilecektir.
export class AppComponent {} farklı bir dosyada ise, forwardRef'a gerek yoktur.
IMHO, doğrudan ebeveyn-çocuk olmayan bileşenler arasında iletişim kurmak için paylaşılan bir hizmet kullanmak genellikle daha iyidir.

+1

Bir şablon için para ödediğimde ve bileşenler arasında iletişim kurarken forwardRef'i kullandığını gördüğümde gördüğümde şaşırmıştım. birşeyi özlemek. Ben iletişim için Rxjs Konuları kullanarak çoğu kodu yeniden yazma sürecinde değilim ama sadece benim için doğrulamak için başka birine ihtiyaç duydum. Teşekkür ederim! – Fab