Evet, yönlendirici çıkışları aracılığıyla görüntülenen bileşenlerin girişlerini ayarlayabilirsiniz . Ne yazık ki, diğer yanıtlarda da belirtildiği gibi bunu programlı olarak yapmanız gerekiyor. Gözlenebilirler söz konusu olduğunda buna büyük bir uyarı var (aşağıda açıklanmıştır).
Bunu nasıl yapacağınız aşağıda açıklanmıştır:
(1)activate Ana şablondaki yönlendirici çıkışının etkinliğine bağlayın :
<router-outlet (activate)="onOutletLoaded($event)"></router-outlet>
(2) Üst öğenin tipkript dosyasına geçin ve her etkinleştirildiğinde alt bileşenin girişlerini programlı olarak ayarlayın:
onOutletLoaded(component) {
component.node = 'someValue';
}
Bitti.
Ancak, yukarıdaki sürüm onOutletLoadednetlik açısından basitleştirilmiştir. Yalnızca, tüm alt bileşenlerin atadığınız aynı girdilere sahip olmasını garanti edebiliyorsanız çalışır. Farklı girişlere sahip bileşenleriniz varsa, tip korumaları kullanın:
onChildLoaded(component: MyComponent1 | MyComponent2) {
if (component instanceof MyComponent1) {
component.someInput = 123;
} else if (component instanceof MyComponent2) {
component.anotherInput = 456;
}
}
Neden bu yöntem servis yöntemine tercih edilebilir?
Ne bu yöntem ne de hizmet yöntemi alt bileşenler ile iletişim kurmanın "doğru yolu" değildir (her iki yöntem de saf şablon bağlamadan uzaklaşır), bu nedenle proje için hangi yolun daha uygun olduğuna karar vermeniz yeterlidir.
Bununla birlikte, bu yöntem, "iletişim için bir hizmet yaratma" yaklaşımı ile ilişkili sıkı bağlantıdan kaçınır (yani, ebeveynin hizmete ihtiyacı vardır ve çocukların hepsi hizmete ihtiyaç duyarak çocukları başka yerde kullanılamaz hale getirir). Ayrıştırma genellikle tercih edilir.
Çoğu durumda, bu yöntem aynı zamanda "açısal yola" daha yakın hissettirir, çünkü verileri çocuğunuzun bileşenlerine @Inputs aracılığıyla aktarmaya devam edebilirsiniz (bu, ayrıştırma kısmıdır - bu, başka yerlerde yeniden kullanımı sağlar). Ayrıca, hizmetinizle sıkı bir şekilde birleştirmek istemediğiniz veya bağlayamayacağınız halihazırda mevcut veya üçüncü taraf bileşenler için de uygundur.
Öte yandan, açısal yoldan daha az hissedebilir ...
Uyarı
Bu yöntemle ilgili uyarı, dizgi dosyasındaki verileri ilettiğiniz için, artık {{ myObservable$ | async }}gözlemlenebilir verilerinizi otomatik olarak kullanmak ve alt bileşenlere aktarmak için şablonlarda (örn. ) Kullanılan eşzamansız boru modelini kullanma seçeneğinizin olmamasıdır .
Bunun yerine, onChildLoaded işlev her çağrıldığında mevcut gözlemlenebilir değerleri almak için bir şeyler ayarlamanız gerekir . Bu muhtemelen ana bileşenin onDestroyişlevinde bir miktar kopma gerektirecektir . Bu çok alışılmadık bir şey değil, genellikle şablona bile ulaşmayan bir gözlemlenebilir nesneyi kullanırken bunun yapılması gereken durumlar vardır.
nodenerede bir türü olarak varstringve bu işin görünmüyor ya da ben bir şey yanlış yapıyorum