2015-11-28 19 views
24

Angular2 sitesinde bir master-detail örneği vardır. Aşağıdaki örnekte deseni takip edemiyorum.Angular2'de bir ana bileşen ve detay bileşeni arasında nasıl iletişim kurulur?

Örneğimde, (1) customerhome (2) müşterisi ve (3) customeretails olmak üzere üç bileşene sahibim. customershome, müşterileri (master) ve müşteri bilgilerini (ayrıntıları) oluşturur. müşterileri için ürününde bir müşteri seçebilirim ve müşterinin bilgileri müşteri bilgileri için bileşeninde görüntülenmelidir.

Müşteri bileşeninden müşteri çözümlerinin bileşenine tek yönlü iletişimi nasıl yapabilirim?

<div style="display: flex;"> 
    <div style="width:25vw"> 
     <customers></customers> 
    </div> 
    <div style="width:75vw; margin:5px"> 
     <customerdetails></customerdetails> 
    </div> 
</div> 
+0

'' –

+0

sen * müşterileri bir * müşteriyi * mülkiyet açığa öneriyorsun * bileşeni ve daha sonra * customerdetails * için aynı * * giriş * özelliğini kullanın? –

+0

Bağlanan nesnelerle iletişim kurmanızı öneririm. Belki bazı müşteri nesnesinde ayrıntı bileşenine bağlayabileceğiniz bir ayrıntı nesneniz var. Burada, konsepti açıklayabilecek bir ana ayrıntı senaryom var: http://www.syntaxsuccess.com/viewarticle/recursive-treeview-in-angular-2.0 Bir ağaç düğümünün birden fazla çocuk düğümleri için bir master olabileceği bir ağaç görünümüdür. Farklı bileşenler, ancak anlatabileceğim bir kavram. – TGH

cevap

23

İşte <customer-list> ve <customer-detail> alt bileşenleri olan bir üst <customer-browser> bileşeni kullanan basit bir uygulamadır.

http://plnkr.co/edit/aEjlwIKKhcErWAnIhY3C?p=preview

tarayıcının kendisinin sadece bir girdi olarak müşterilerinin bir dizi kabul eder ve bir iç selectedCustomer özelliğine sahiptir.

Liste bileşeni aynı listeyi kabul eder ve bir "selected" özelliği sunar ve selectedChange çıkış olayını yayar. Bu sözdizimi iki yollu bağlama sağlar ve bu, üst öğenin selectedCustomer özelliğine bağlı olur.

detay bileşeni sadece ebeveynin selectedCustomer özelliğine bağlı bir müşteri girdi alır.

+0

Bir yan not olarak, bu örnek Microsoft Edge Evergreen tarayıcısında çalışmaz. Ancak Google Chrome'da çalıştı. –

+0

Seçili olanları anlama ** Değiştir ** burada anahtardır !? –

10

bu deneyin -

@Component({ 
    selector: 'child', 
    inputs: ['model'], 
    template: `<h3>child</h3> 
    <div>{{model.prop1}}</div> 
    <div>{{model.prop2}}<div>` 
}) 
class Child { 

} 


@Component({ 
    selector: 'my-app', 
    directives: [Child], 
    template: ` 
    <h3>Parent</h3> 
    <button (click)="updateModel()">update model</button> 
    <child [model]="parentModel"></child> 
    ` 
}) 
class App { 
    parentModel = { prop1: '1st prop', prop2: '2nd prop' }; 
    constructor() {} 
    updateModel() { this.parentModel.prop1 += ' more'; } 
} 
+0

.. Çocuktan uygulamaya geri iletişim kurabilir misiniz? –

+0

Eh, bir çıkış olayı yayabilir. – Kanchan

İlgili konular