Как передать разные переменные шаблона одной кнопке в angular2?

В моем компоненте более двух шаблонных переменных, например, blow:

<div #div1>
    <div #part1 [hidden]="true">
    </div>
    <div #part2>
    </div>
</div>
<div #div2>
    <div #part3 [hidden]="true">
    </div>
    <div #part4>
    </div>
 </div>
<button (click)="showDiv(div1,div2)"></button>

Я хочу нажать на кнопку, чтобы показать part1 и скрыть part2, так же, как part3 и part4, но это всего лишь одна кнопка. Теперь я могу заменить div1 и div2 на part1 и part2, а как насчет part3 и part4? Еще одна кнопка? Но реальная просьба - больше двух делений, может быть, дюжина, так что, кто-нибудь может помочь? Большое спасибо.

2 ответа

Внутри вашего компонента вы можете добавить что-то вроде этого

`

constructor(private renderer: Renderer2, private el: ElementRef) {}
showDiv(){
this.renderer.setStyle(
    this.el.nativeElement,
    'display:None',
    'block'
  );
}

`

Чтобы решить вашу проблему, вы можете использовать ngContainer а также ngTemplate,

С помощью ngContainer а также ngTemplate:

HTML:

<div> <!-- Div 1 -->
  <ng-container *ngIf="isPartVisible(1); then part1; else part2"></ng-container> 
  <ng-template #part1><div>Part 1</div></ng-template>
  <ng-template #part2><div>Part 2</div></ng-template>
</div>
<!-- Other parts here. -->

JavaScript:

var partVisibilities = {};
partVisibilities["1"] = true;

public isPartVisible(part) {
    return partVisiblities[part] == true; 
    // If you haven't set the visibility setting for a part yet, then it will not show as undefined is falsy in JS.
}
Другие вопросы по тегам