Я создаю контейнер с заголовком и содержимым. Я могу переключить контейнер, нажав на заголовок и покажу свой контент. В моем заголовке есть также некоторые сведения, которые видны в каждом состоянии переключения. Это выглядит следующим образом:Используйте ng-transclude более одного раза в одном компоненте
закрыт (только заголовок материала):
открыл (заголовок и прочее содержание):
Я использовал угловой компонент для построения этого:
myContainer.ts:
/** @ngInject */
export class MyContainer extends Controller {
static componentName = 'myContainer';
static templateUrl = 'app/comp/components/myContainer/myContainer.html';
static componentOptions: ng.IComponentOptions = {
transclude: true,
bindings: {
headerTitle: '@'
}
};
headerTitle: string;
isShownBlock: boolean = false;
constructor(
) {
super();
}
}
myContainer.html:
<div class="containerHeader" ng-click="ctrl.isShownBlock = !ctrl.isShownBlock">
<my-icon icon="arrow-filled"></my-icon>
<div class="containerTitle">{{ctrl.headerTitle}}</div>
</div>
<div class="containerContent" ng-if="ctrl.isShownBlock">
<div class="containerInnerContent" ng-transclude>
<!--TRANSCLUDED_CONTENT-->
</div>
</div>
Использование MyContainer в моем коде:
<my-container header-title="my container">
transcluded things
</my-container>
Как вы можете видеть, я использую binding
, чтобы установить свой титул контейнера и Переведите мои материалы в ng-transclude
. Теперь я хотел бы установить заголовок контейнера также с помощью ng-transclude
. Моя проблема в том, что я не знаю, как отличить переведенные материалы для моего названия и моего контента? Я попытался создать собственный компонент для заголовка и поместить его в файл <my-container></my-container>
, а также использовать ng-transclude
, но я не получил окончательного решения. Надеюсь, это достаточно ясно, какие-то идеи?