2016-08-05 19 views
5

Transclude işlevselliğini kullanan bir ana bileşenim var. Varsayılan olarak çapraz dahil bölümde çocuk bileşeni vardır:transcluded bileşen, üst denetleyiciye erişemiyor

 export class ParentController { 

       // some logic here 
      } 

      angular.module('dmp').component('parentObject', { 
       bindings: { 

       }, 
       controller: ParentController, 
       transclude: true, 
       templateUrl: 'test/parent.html' 
      }); 
    } 



    export class ChildController { 



    } 

    angular.module('dmp').component('childObject', { 
     bindings: { 

     }, 
     require: { 
      parentCtrl: '^parentObject' 
     }, 
     controller: ChildController, 
     templateUrl: 'test/child.html' 
    }); 
} 

index.html: <child-object> ait transclude kısmındadır

<div ng-transclude> 
    <child-object></child-object> 
</div> 

Not olduğunu

<parent-object> 

</parent-object> 

Parent.html Üst nesne

Aşağıdaki hatayı alıyorum:Bu şekilde yaparsam, beklendiği gibi çalışır ancak bu benim durumum değildir.

<parent-object> 
    <child-object></child-object> 
</parent-object> 

sayesinde GYC Yorumlarınız ilgili

DÜZENLEME.

Eğer doğru anladıysam <div ng-transclude> parçasını kaldırabilir ve yalnızca alt nesneyi kopyalanmadan kullanabilirim. Bu ok ama söylemek sonradan istiyorum:

<parent-object> 
    <some-other-object></some-other-object> 
</parent-Object> 

Sonra <child-object><some-other-object> ile değiştirilecektir. Transkripsiyon kullanmazsam bu olmayacak ve <child-object> kalacaktır. childObject tanımı

+0

Hatanızı snippet/fiddle'de yeniden oluşturabilir misiniz? – gyc

+0

Hiçbir zaman pasaj oluşturma konusunda iyi olmadım - denedim ama typescript kullandığım için başarısız oldum ve işe yaramazdım :( – MDB

cevap

0

deneyin değişikliği, bu

require: { 
    parentController: '^parentObject' 
} 

belki parentCtrlparentController için tanımlı takma adı olmadığından

böyle bakmak sınırlandırmak böylece
+0

Hayır, sorun bu değil. – MDB

0

camelcased bileşenler tire, dom-elemanlar olarak sınırlandırılır:

angular.module('dmp').component('childObject', { 
    bindings: { 

    }, 
    require: { 
     parentCtrl: '^parent-object' 
    }, 
    controller: ChildController, 
    templateUrl: 'test/child.html' 
});