This site показывает три идентичных компонента (справа, в сером цвете), которые генерируются с различными параметрами, чтобы предоставить им различный контент и параметры. (Они вызывают разные API для своих данных.) Они содержатся в главном компоненте, а атрибуты этого компонента управляют отображением, количеством и т. Д. Однако, когда один дочерний компонент отображается отдельно, он отлично работает, но когда более одного отображается только первый. На самом деле, это 75% работает, но щелчок мышью по меню ничего не делает.повторяющиеся компоненты, конфликтующие друг с другом в Angular 2
Я пропустил и сделал все мои функции и переменные закрытыми, прежде чем понял, что такая область видимости не выполняется во время выполнения. Чтобы различать экземпляры в CSS, я добавляю инкрементный идентификатор к каждому тегу компонента, а также класс, чтобы указать, какое существо представляет собой конкретный экземпляр: Calendar, Opps Guide и т. Д.
Означает ли это, что один обработчик будет обрабатывать щелчок с другого компонента, если у них есть одно и то же имя? Если да, можно ли добавить базовое значение для каждого имени переменной и имени метода, которое увеличивается вместе с идентификатором? Или здесь что-то еще происходит?
Вот мой код. Главный компонент:.
<div class="related-content" [class.toolkit]=
"asCalendar.length > 1 || asOppsGuide.length > 1 || asProjects.length > 1 || contentTypes.length > 1 || displayLimit.length > 1 || title.length > 1">
<content-display *ngFor="let t of title; let i=index"
class="{{asCalendar[i]? 'calendarApp': asProjects[i]? 'projectsApp': asOppsGuide[i]? 'oppsGuideApp':''}}"
id="app{{i}}"
[appId]="'app' + i"
[title]="t"
[asCalendar]="asCalendar[i]"
[asOppsGuide]="asOppsGuide[i]"
[asProjects]="asProjects[i]"
[showNameSearch]="showNameSearch[i]"
[contentTypes]="contentTypes[i]"
[displayLimit]="displayLimit[i]"
[locale]="locale"
[pageId]="pageId"
[topicFilter]="topicFilter[i]"></content-display>
</div>
... и часть повторяемого компонента ребенка, который не в состоянии стрелять (или стрельбы и немедленно переключая выключен или что-то toggleFilterMenus() вызывается, которые я могу видеть из console.log(), но я не знаю, какой компонент она вызывается для:
<div class="filters" *ngIf="loaded" [class.menu-active]="filterIsClicked" >
<span class="filter-indicator" (click)="toggleFilterMenus()">Filter</span>
<span *ngIf="!isMobile() || filterIsClicked">
<div *ngFor="let menu of menuArray" class="rcMenu"
[class.active]="menu.isDisplaying"
[class.radio]="menu.singleChoice"
>
<div (click)="toggleMenuDisplaying(menu)" class="hotspot" *ngIf="menu.displayArray.length">{{menu.label}}</div><!-- *ngIf="!asOppsGuide && !asCalendar" -->
<ul *ngIf="loaded && menu.isDisplaying" >
<li *ngFor="let menuOption of menu.displayArray" (click)="onSelected(menuOption)" class="rcMenuItem"
[class.rcSelected] = "menuOption.isSelected" [innerHtml]="menuOption.label"></li><!-- | uppercase -->
</ul>
</div>
</span>
</div><!--end filters-->
Ack, не видно это. По крайней мере, мой инстинкт о сохранности областей был правильным. Большое спасибо. – dcoli