Angular Расширение материала удалить ngIf - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть Angular (8) панель расширения материала внутри складной боковой панели.

На данный момент панели расширения будут активироваться независимо от того, открыта ли боковая навигация или нет. Когда панель закрыта, значки не должны ничего делать. Элементы должны разворачиваться / разворачиваться только тогда, когда боковая навигация находится в открытом положении (широко). Прикрепленное изображение показывает боковую панель закрыта. Шевроны представлены как часть панели расширения материала. Они исчезнут, как только исчезнет способность к расширению.

Итак, в итоге, когда боковая навигация ! IsExpanded , я хотел бы удалить из домена возможность открывать расширение панель. <mat-expansion-panel [disabled]="isDisabled"> отключит панель.

В идеале я хотел бы научиться делать две вещи:

  1. Деактивировать / убрать возможность расширения при боковой навигации закрыто, ngif.

  2. BY Javascript, когда ! isExpanded css дисплей: нет; оказывает. Я мог бы просто спрятать шеврон как полшага, но на самом деле все это нужно go. Но я все еще хотел бы увидеть, как это сделать программно.

HTML:

  <mat-expansion-panel>
      <mat-expansion-panel-header>
        <mat-icon *ngIf="!isExpanded">
          <fa-icon [icon]="faCheck"></fa-icon>
        </mat-icon>
        <p *ngIf="isExpanded">
          <fa-icon [icon]="faCheck"></fa-icon>
          <span class="forms">Buttons & Indicators</span></p>
      </mat-expansion-panel-header>
      <p *ngIf="!isExpanded" p>content</p>
    </mat-expansion-panel>

 </mat-sidenav> 
</mat-sidenav-container>

Отображает:

<mat-expansion-panel _ngcontent-lgo-c0="" class="mat-expansion-panel ng-tns-c8-7 ng-star-inserted" style=""><mat-expansion-panel-header _ngcontent-lgo-c0="" class="mat-expansion-panel-header ng-tns-c9-8 ng-trigger ng-trigger-expansionHeight ng-star-inserted" role="button" id="mat-expansion-panel-header-3" tabindex="0" aria-controls="cdk-accordion-child-3" aria-expanded="false" aria-disabled="false" style="height: 48px;" data-ol-has-click-handler=""><span class="mat-content"><!--bindings={
  "ng-reflect-ng-if": "true"
}--><mat-icon _ngcontent-lgo-c0="" class="mat-icon notranslate material-icons mat-icon-no-color ng-star-inserted" role="img" aria-hidden="true" style=""><fa-icon _ngcontent-lgo-c0="" class="ng-fa-icon" ng-reflect-icon="[object Object]"><svg role="img" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="check" class="svg-inline--fa fa-check fa-w-16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></fa-icon></mat-icon><!--bindings={
  "ng-reflect-ng-if": "false"
}--></span><!--bindings={
  "ng-reflect-ng-if": "true"
}-->**<span class="mat-expansion-indicator ng-tns-c9-8 ng-trigger ng-trigger-indicatorRotate ng-star-inserted" style="transform: rotate(0deg);"></span>**</mat-expansion-panel-header><div class="mat-expansion-panel-content ng-trigger ng-trigger-bodyExpansion" role="region" aria-labelledby="mat-expansion-panel-header-3" id="cdk-accordion-child-3" style="height: 0px; visibility: hidden;"><div class="mat-expansion-panel-body"><!--bindings={
  "ng-reflect-ng-if": "true"
}--><p _ngcontent-lgo-c0="" p="" class="ng-star-inserted" style="">content</p><!--bindings={}--></div></div></mat-expansion-panel>

компонент:

import { Component } from '@angular/core';
import { faFileAlt} from '@fortawesome/free-solid-svg-icons';
import {faBars} from '@fortawesome/free-solid-svg-icons/faBars';
import {faChevronLeft} from '@fortawesome/free-solid-svg-icons/faChevronLeft';
import {faLocationArrow} from '@fortawesome/free-solid-svg-icons/faLocationArrow';
import {faCheck} from '@fortawesome/free-solid-svg-icons/faCheck';
import {faWindowRestore} from '@fortawesome/free-solid-svg-icons/faWindowRestore';
import {faTable} from '@fortawesome/free-solid-svg-icons/faTable';


@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent {
  title = 'style-guide';
  // opened = 'opened';
  isExpanded = false;
  faBars = faBars;
  faChevronLeft = faChevronLeft;
  faFileAlt = faFileAlt;
  faLocationArrow = faLocationArrow;
  faCheck = faCheck;
  faWindowRestore = faWindowRestore;
  faTable = faTable;
}

Спасибо !!!

closed side nav

Ответы [ 2 ]

0 голосов
/ 03 марта 2020

HTML:

  <mat-expansion-panel [disabled]="!isExpanded">
   <mat-expansion-panel-header>
    <mat-icon>
      <fa-icon [icon]="faCheck"></fa-icon>
    </mat-icon>
    <p>
      <fa-icon [icon]="faCheck"></fa-icon>
      <span class="forms">Buttons & Indicators</span></p>
   </mat-expansion-panel-header>
   <p>content</p>
  </mat-expansion-panel>
0 голосов
/ 03 марта 2020

Я просмотрел документацию по материалам и панель в боковой навигации, и нигде не предлагалось расширение / заключение. Когда я обнаружил, что прилагал слишком много усилий к тому, что должно быть, если бы это было законное UX-соглашение, достаточно простое, я понял, что это не очень хорошее решение, хотя и возможно. Мой вывод, ознакомьтесь с разделом «Материалы» c для удобства использования до go по каркасам, прежде чем начинать создавать контент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...