【问题标题】:Angular Material List: How to prevent mat-list-items from wrapping content?Angular Material List:如何防止 mat-list-items 包装内容?
【发布时间】:2021-04-06 06:07:00
【问题描述】:

在我的 Angular Material 应用程序中,我有一个包含多行 (mat-list-items) 的列表 (mat-list)。

我试图阻止 mat-list-items 包装它们的内容。

例如,而不是这个:

IT 架构师
在通用电气

应该是这样的:

通用电气的 IT 架构师

这里是html:

component.html:

<mat-list>
      <mat-list-item class="no-wrap">                    
          <h3 class="name"> {{firstName}} {{lastName}} </h3>                                       
      </mat-list-item> 
      <mat-divider></mat-divider>  
      <mat-list-item class="no-wrap" *ngIf="position && company"> {{position}} at {{company}} </mat-list-item>
      <div class="gap"></div>    
      <mat-list-item class="no-wrap">
          <mat-icon>email</mat-icon>
          <span class="email"> {{email}} </span>
      </mat-list-item>
  </mat-list>

我尝试使用以下 CSS 实现我的目标:

component.css:

.no-wrap {
    word-wrap: break-word;
    white-space: pre-wrap;
}

但是,这不起作用。

如何防止角材料列表中的项目包裹它们包含的文本?

【问题讨论】:

    标签: css angular angular-material


    【解决方案1】:
        <mat-list>
              <mat-list-item class="no-wrap">                    
                  <h3 class="name"> <span class="nobreak"> {{firstName}} {{lastName}} </span> </h3>                                       
              </mat-list-item> 
              <mat-divider></mat-divider>  
              <mat-list-item class="no-wrap" *ngIf="position && company"> <span class="nobreak"> {{position}} at {{company}} </span> </mat-list-item>
              <div class="gap"></div>    
              <mat-list-item class="no-wrap">
                  <mat-icon>email</mat-icon>
                  <span class="email"> {{email}} </span>
              </mat-list-item>
        </mat-list>
    

    css

     .no-wrap {
       overflow: hidden;
       text-overflow: ellipsis;
       white-space: nowrap;
     }
    

    【讨论】:

    • 我认为您误解了我的目标...我希望文本不要换行/中断...它应保持在一行而不换行/拆分为更多行
    • 我已经改变了答案文本不会中断,但如果太大将不会显示所有内容。
    【解决方案2】:

    运行 Angular 11.X

    另一种选择是在树周围添加一个滚动视口,然后将 ma​​t-tree-node 的 CSS 设置为 white-space: nowrap

    <mat-card>
      <mat-card-content>
        <cdk-virtual-scroll-viewport itemSize="30" class="tree">
          <ng-container *cdkVirtualFor="let item of dataSource"></ng-container>
          <mat-tree [dataSource]="dataSource" [treeControl]="treeControl">
            <mat-tree-node *matTreeNodeDef="let node" matTreeNodeToggle matTreeNodePadding matTreeNodePaddingIndent="20px" class="tree-node">
              <button mat-icon-button disabled></button>
              {{node.name}}
            </mat-tree-node>
            <mat-tree-node *matTreeNodeDef="let node; when: hasChild" matTreeNodePadding matTreeNodePaddingIndent="20px" class="tree-node">
              <button mat-icon-button matTreeNodeToggle [attr.aria-label]="'Toggle ' + node.name">
                <mat-icon class="mat-icon-rtl-mirror">
                  {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}
                </mat-icon>
              </button>
              {{node.name}}
            </mat-tree-node>
          </mat-tree>
        </cdk-virtual-scroll-viewport>
      </mat-card-content>
    </mat-card>
    

    CSS

    .type-icon {
      color: #757575;
      margin-right: 5px;
    }
    
    .tree-node {
      height: 30px;
      min-height: 30px;
      white-space: nowrap;
    }
    
    .tree {
      height: 600px;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-18
      • 2019-06-16
      • 2019-03-05
      • 2020-06-29
      • 2018-12-29
      • 2019-10-09
      • 2019-04-25
      • 1970-01-01
      相关资源
      最近更新 更多