标签: angular-material-5

使用 mat table 数据源的角度输入变化检测性能

有谁知道更新 ngOnChanges 生命周期挂钩中的 mat 表数据源是否可以?或者是否存在潜在的数据泄漏或大规模性能问题?

这是我的意思的一个简单示例。

子组件有一个输入数据的父组件,如下所示:

<data-list [data]="someData"></data-list>
Run Code Online (Sandbox Code Playgroud)

和子组件:

import { Component, Input, SimpleChanges, OnInit, OnChanges } from '@angular/core';
import { MatTableDataSource } from '@angular/material';


@Component({
  selector: 'data-list',
  templateUrl: './data-list.component.html',
  styleUrls: ['./data-list.component.scss']
})
export class DataListComponent implements OnInit, OnChanges {
  @Input() data: any[];

  dataSource: MatTableDataSource<any>;
  displayedColumns = [
    'title',
    'detail'
  ];

  constructor() { }

  ngOnInit() {
    this.dataSource = new MatTableDataSource<any>(this.data);
  }

  ngOnChanges(changes: SimpleChanges) {
    this.dataSource = new MatTableDataSource<any>(changes.data.currentValue);
  }

}
Run Code Online (Sandbox Code Playgroud)

现在父组件订阅了不同的 observables,它们对数据的不同变化做出反应。也就是说,如果添加或删除数据,则父组件会相应地更新,并将其作为输入传递给子组件。

由于子组件使用 ngOnChanges 生命周期钩子来观察输入数据的变化,子组件通过实例化一个新的 MatTableDataSource 来更新表数据。

一切正常。除了 ngOnChanges …

datasource input ngonchanges angular5 angular-material-5

5
推荐指数
0
解决办法
3959
查看次数

带有角度材质的垂直标签

使用适当的Angular Material指令,如何将方向更改为垂直?

从垂直标签开始:

vertical-tabs截图

然后想要放到mat-select下拉列表下面的内容:

mat-select截图

编辑:如果有人不打扰我,我将努力使/sf/answers/3037231291/适应我的答案:)

css angular-material2 angular-components angular angular-material-5

5
推荐指数
3
解决办法
1万
查看次数

如何制作带有粘性第一列的角度材质表

有没有办法使用 CSS 制作具有粘性第一列的 Angular Material?

这里准备编辑Stackblitz代码

我尝试调整此解决方案https://jsfiddle.net/zinoui/BmLpV/,但由于某些原因,第一列被抛出表格本身,并且失去了样式。

<div class="zui-wrapper">
    <div class="zui-scroller">
        <table class="zui-table">
            <thead>
                <tr>
                    <th class="zui-sticky-col">Name</th>..........
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td class="zui-sticky-col">DeMarcus Cousins</td>
.......
                <tr>
            </tbody>
        </table>
    </div>
</div>


.zui-scroller {
    margin-left: 141px;
    overflow-x: scroll;
    overflow-y: visible;
    padding-bottom: 5px;
    width: 300px;
}
.zui-table .zui-sticky-col {
    border-left: solid 1px #DDEFEF;
    border-right: solid 1px #DDEFEF;
    left: 0;
    position: absolute;
    top: auto;
    width: 120px;
}
Run Code Online (Sandbox Code Playgroud)

css angular angular-material-5

5
推荐指数
1
解决办法
2万
查看次数

多行上的角度材料垫形式字段占位符文本

我使用一个mat-form-fieldtextarea内部的常规。我的问题是此 Textarea 的占位符文本相当长。在移动设备中,空间更加有限,此占位符文本会被带有省略号的 Angular Material 截断。

我想让占位符文本通过向下移动到下一行来调整空间限制。因此,例如,而不是:

This is a really long text and it cannot fit on a single li...
Run Code Online (Sandbox Code Playgroud)

我想:

This is a really long text and it cannot fit on a single
line
Run Code Online (Sandbox Code Playgroud)

我已经尝试了各种方法来更改mat-input-placeholderand的 CSS,但mat-input-placeholder-wrapper没有成功。我知道解决方案的一部分涉及更改 text-overflow 属性(如下),但我无法获得其他部分。

::ng-deep .mat-input-placeholder {
  text-overflow: clip;
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮忙吗?

谢谢!

angular-material angular angular-material-5

5
推荐指数
1
解决办法
8396
查看次数

材料 2 如何在子视图中打开底部工作表

您如何使底部工作表组件像卡片一样出现在视图中,而不仅仅是出现在屏幕底部?使用版本 6.0.1。

从文档(https://material.angular.io/components/bottom-sheet/api)中,在选项中指定 viewContainerRef 应该会产生一些效果,但在示例中没有任何反应。

演示链接:https : //stackblitz.com/edit/angular-kfpaa2?file= app/ bottom-sheet-overview-example.ts

angular-material2 angular angular-material-5

5
推荐指数
0
解决办法
909
查看次数

Angular 5 Material多重菜单

我对Angular 5并不陌生,并且刚刚开始学习它。

最近,我一直在尝试使用Angular 5 Material为我的应用程序创建一个包含多个菜单的菜单栏。
鼠标进入时将触发/打开菜单,鼠标离开菜单时将关闭菜单。
我的问题是每当鼠标悬停在第一个菜单上时,它将加载第二个菜单的菜单项。

这是问题的屏幕截图:
在此处输入图片说明

这是我的代码:
mainmenu.component.html

<div>
    <button mat-button [matMenuTriggerFor]="menu1" 
      (mouseenter)="openMyMenu()">Trigger1</button>
    <mat-menu #menu1="matMenu" overlapTrigger="false">
        <span (mouseleave)="closeMyMenu()">
            <button mat-menu-item>Item 1</button>
            <button mat-menu-item>Item 2</button>
        </span>
   </mat-menu>
</div>
<div>
    <button mat-button [matMenuTriggerFor]="menu2"
      (mouseenter)="openMyMenu()">Trigger2</button>
    <mat-menu #menu2="matMenu" overlapTrigger="false">
        <span (mouseleave)="closeMyMenu()">
            <button mat-menu-item>Item 3</button>
            <button mat-menu-item>Item 4</button>
        </span>
    </mat-menu>
</div>
Run Code Online (Sandbox Code Playgroud)



mainmenu.component.ts

import { Component, OnInit, ViewChild } from '@angular/core';
import {MatMenuTrigger} from '@angular/material'

@Component({
  selector: 'app-mainmenu',
  templateUrl: './mainmenu.component.html',
  styleUrls: ['./mainmenu.component.css']
})
export class MainmenuComponent implements OnInit {
  @ViewChild(MatMenuTrigger) matMenuTrigger: MatMenuTrigger; …
Run Code Online (Sandbox Code Playgroud)

javascript angular angular5 angular-material-5

5
推荐指数
3
解决办法
9526
查看次数

带子扩展面板的角形材料扩展面板

实际上,我使用了角形材料扩展面板(手风琴)来进行面板扩展。所以我尝试过的是我只想在一个父扩展面板中显示子面板,如下所示。见下图。

在此输入图像描述

数据库将成为顶级父面板,其中我有不同的数据库作为子面板。为此,我编写了这样的代码。但代码不起作用意味着当我单击子面板内的任何父面板时,所有内容都会折叠。我的意思是说面板正在倒塌。参见下面的代码:

<mat-accordion>

        <mat-expansion-panel>
            <mat-expansion-panel-header>
              <mat-panel-title>
                Databases
              </mat-panel-title>
              </mat-expansion-panel-header>


              <mat-expansion-panel (opened)="panelOpenState = true"
                             (closed)="panelOpenState = false">
                  <mat-expansion-panel-header>
                    <mat-panel-title>
                      MySQL
                    </mat-panel-title>
                  </mat-expansion-panel-header>

                  <mat-form-field>
                    <textarea matInput placeholder="Assertions"></textarea>
                  </mat-form-field>

                  <mat-form-field>
                      <textarea matInput placeholder="Assertions"></textarea>
                    </mat-form-field>

                    <mat-form-field>
                        <textarea matInput placeholder="Assertions"></textarea>
                      </mat-form-field>

                      <mat-form-field>
                          <textarea matInput placeholder="Assertions"></textarea>
                        </mat-form-field>
                </mat-expansion-panel>


                <mat-expansion-panel (opened)="panelOpenState = true"
                             (closed)="panelOpenState = false">
                  <mat-expansion-panel-header>
                    <mat-panel-title>
                        Oracle
                    </mat-panel-title>
                  </mat-expansion-panel-header>

                  <mat-form-field>
                    <textarea matInput placeholder="Assertions"></textarea>
                  </mat-form-field>

                  <mat-form-field>
                      <textarea matInput placeholder="Assertions"></textarea>
                    </mat-form-field>

                    <mat-form-field>
                        <textarea matInput placeholder="Assertions"></textarea>
                      </mat-form-field>

                      <mat-form-field>
                          <textarea matInput placeholder="Assertions"></textarea>
                        </mat-form-field>
                </mat-expansion-panel>

                <mat-expansion-panel (opened)="panelOpenState = true"
                             (closed)="panelOpenState …
Run Code Online (Sandbox Code Playgroud)

angular-material2 angular angular-material-5

5
推荐指数
3
解决办法
1万
查看次数

如何在 Angular Mat-Select 中动态禁用特定选项

我有一个包含对象nameid属性的列表:

[
  {
    "name": "open",
    "id": "1"
  },
  {
    "name": "inprogress",
    "id": "2"
  },
  {
    "name": "close",
    "id": "3"
  }
]
Run Code Online (Sandbox Code Playgroud)

并使用带有 *ngFor 的 MatSelect 迭代数组并使用 select using 绑定当前状态[(ngModel)]

预期输出:

如果当前状态是inprogress禁用open选项

StackBlitz 示例

angular-material2 angular angular-material-5

5
推荐指数
2
解决办法
3万
查看次数

如何主题角度材料组件形状?

有没有办法在角度材料中主题组件形状?我知道材料设计有一个形状概念,它允许您为所有小/中/大组件创建更多圆角、更少圆角甚至切角。有没有办法在角材料中实现它?

如果不是,那么在角材料中全局自定义组件的最佳方法是什么?说我想删除 all 上的圆角<mat-button>

material-design angular-material angular-material-5 angular-material-6 angular-material-7

5
推荐指数
1
解决办法
6098
查看次数

Angular Material cdk-container 和主站点固定标头 z-index 覆盖

我有一个带有fixed header角材料的z-index网站1100

虽然mat-menu我的网站中有一些与标题重叠z-index:1200并具有类cdk-overlay-container(角度材料类),但这是默认行为。

为了覆盖这个,我只需减少 to ,cdk-overlay-container z-index使其1000落后于fixed header,一切都对我来说没问题。

问题

但是,当我打开使用相同cdk-overlay-container和相同的材质对话框时z-index,它会在该覆盖层上方显示我的固定标题,因为它很高z-index,所以任何想法如何通过添加不同的来实现上述场景,class以便cdk-overlay-container我的内容mat-menu落后于fixed header但我mat-dialog最重要的内容。

屏幕截图

正常场景 https://www.screencast.com/t/XhB2szH3gZe

问题场景 https://www.screencast.com/t/fYrMYFEOd

我有一个通过类型脚本解决方案(当对话框显示较低的标题的 z-index 时),但我需要一些纯 CSS 解决方案。

谢谢!

css angular angular-material-5

5
推荐指数
2
解决办法
1万
查看次数