2016-06-07 4 views
2

У меня есть угловой 2-компонентный (my-panel), который будет отображать поставляемый контент с использованием ng-контента. Я также хочу отобразить тот же контент в расширенном модале, однако, похоже, что я могу ссылаться только на ng-контент один раз в шаблоне.Повторное использование ng-контента

Можно ли ссылаться на содержимое панели более одного раза в шаблоне, тем самым избегая необходимости передавать один и тот же контент более одного раза, и вам нужно конкретно ссылаться на каждый из них с помощью селекторов с ng-содержимым?

Заранее спасибо. Шаблон

моя панель:

<div class="panel panel-default"> 
    <!-- non-expanded panel --> 
    <div class="panel-body"> 
     <ng-content></ng-content> 
    </div> 

    <button data-toggle="modal" data-target="#myModal">Expand</button> 

    <!-- Modal --> 
    <div id="myModal" class="modal fade" role="dialog"> 
     <div class="modal-dialog"> 
      <!-- Modal content--> 
      <div class="modal-content"> 
       <div class="modal-body"> 
        <ng-content></ng-content> <-- content not displayed 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

желательно моей панели использование:

<my-panel> 
<p>my panel content</p> 
</my-panel> 
+0

Подобно http://stackoverflow.com/questions/35190188/can-an-ng-content-be -used-inside-of-an-ng-for –

ответ

1

Там должен быть только один <ng-content> без атрибута select="selector". Весь контент, который не соответствует селектору других элементов <ng-content>, будет переведен в первый элемент <ng-content> без атрибута select.

То, что вы можете использовать вместо этого

<div *ngFor="let x of y" *ngForTemplate="someTemplateRef" 

Plunker example

обновление

Выше синтаксиса, похоже, разбивается на окончание Angular2.

Используйте вместо

<template ngFor let-x [ngForOf]="y" [ngForTemplate]="someTemplateRef"> 
    <div *ngFor="let x of y" *ngForTemplate="someTemplateRef"> 
</template> 

Это также может работать (не пробовал)

<div *ngFor="let x of y template:someTemplateRef" 
+0

Спасибо за этот ответ. То, что я в основном пытаюсь сделать, это клонировать данные, переданные на мою панель, но не кажется, что я могу сделать это, не клонируя данные сами, передав их дважды, а затем выбрав каждый. Прошедшие данные в конечном итоге будут тяжелым весом, заполненным множеством сетевых вызовов, и я стараюсь избегать дублирования всего этого, чтобы показать один и тот же контент в расширенном модальном формате. Но если я правильно понимаю вас, я не могу этого сделать. – user3481798