Angular Material mat-table 定义组件中可重用的列

2023-11-24

有人知道是否可以创建一个与 mat-table 一起使用的“列”组件,我尝试为常用的列定义创建一个组件,但是在添加到表时出现错误,无法找到列选择器,我的列定义如下:

@Component({
  selector: 'iam-select-column',
  template: `
  <ng-container matColumnDef="select">
    <mat-header-cell *matHeaderCellDef>
      <mat-checkbox></mat-checkbox>
    </mat-header-cell>
    <mat-cell *matCellDef="let row">
      <mat-checkbox></mat-checkbox>
    </mat-cell>
  </ng-container>
  `,
  styles: [`
  `]
})
export class SelectColumnComponent implements OnInit {

  constructor() { }

  ngOnInit() {
  }

}

并在表中使用它

<mat-table class="mat-elevation-z8">

  <iam-select-column></iam-select-column>

  <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
  <mat-row *matRowDef="let row; columns: displayedColumns;"></mat-row>

</mat-table>

显示的列是:

  displayedColumns = [
    'select'
  ];

是否可以这样做,因为我想避免在具有选择列的表中出现重复?


为了使其工作,你必须添加columnDef使用手动到表table.addColumnDef method.

@Component({
  selector: 'iam-select-column',
  template: `
    <ng-container matColumnDef="select">
        ...
    </ng-container>
  `
})
export class SelectColumnComponent implements OnInit {
  @ViewChild(MatColumnDef) columnDef: MatColumnDef;

  constructor(@Optional() public table: MatTable<any>, private cdRef: ChangeDetectorRef) { }

  ngOnInit() {
    if (this.table) {
      this.cdRef.detectChanges();
      this.table.addColumnDef(this.columnDef);
    }
  }
}

但在这样做之前我们必须确保matColumnDef指令已经完成绑定初始化,因此它已经name。为此,我们必须在该组件上运行 detectorChanges。

NG 运行示例

另一种方法是在父组件中提供该名称,如角度材料问题中所述https://github.com/angular/material2/issues/13808#issuecomment-434417804:

父级.html

<mat-table class="mat-elevation-z8">

  <iam-select-column name="select"></iam-select-column>

选择列组件

@Input()
get name(): string { return this._name; }
set name(name: string) {
    this._name = name;
    this.columnDef.name = name;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular Material mat-table 定义组件中可重用的列 的相关文章

  • 获取“回调 URL 与 Auth0 不匹配”

    我有一个 Auth0 客户端 配置了以下回调 URL http 本地主机 4200 http localhost 4200 我可以正常登录 问题是当我导航到应用程序中的某个 URL 时 http localhost 4200 places
  • ngrx 存储是否持久?

    ngrx 存储是否持久 换句话说 我们可以关闭浏览器重新打开它 并检索添加到ngrx 商店 https github com ngrx platform 目前 ngrx store 不支持此类功能 但是您可以通过使用类似的库来维护状态ngr
  • 如何测试包含自定义表单控件的组件?

    我有一个这样的组件 Component selector app custom form control templateUrl
  • 如何使用 Angular 2 动画实现翻转效果?

    我一直在我的项目中使用纯CSS翻转卡片 但这个解决方案不是合适的 有人可以通过点击按钮来呈现角度 2 的翻转吗 我在 angularjs 中找到了一个https codepen io Zbeyer pen oXQrZg https code
  • 在 Angular 9 应用程序的生产中同时使用 AOT 和 JIT

    因此 我一直在构建一个 Angular 9 应用程序 其中有一个客户仪表板来管理保存在服务器上的模板 这些模板可以通过激活系统在不同的设备上查看 因此设备与用户绑定 所以让我们说https templates com我们有 login da
  • 在停止调试时终止 VS Code 中的 ng 服务任务

    我有一个 Angular 项目 目前正在通过 chrome 调试器在 vs code 内进行调试 我的launch json uses preLaunchTask serve 其中服务定义于tasks json as ng serve 这样
  • 为什么 Angular 2 项目如此大 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们正在用 ng2 重写 ng1 项目 我们的 ng1 项目构建后大约有 8mb 我们对 ng2 的重写已经完成了大约四分之一 并且我
  • 元素不适应 Firefox 上的

    使用 ES6 ish D3js 模块运行 Angular 6 应用程序会导致 Firefox 出现问题 Chromium Chrome Safari 和 IE Edge 工作正常 伪代码看起来类似于 生产代码可以在下面找到
  • Windows 10 中的 npm 安装错误( npm install -g angular-cli )

    node v v4 5 0 npm v 5 0 1 有人在 Windows 10 中安装 angular cli 时遇到过这种问题吗 请尝试以下操作 step 0 运行这个命令 npm uninstall g angular cli npm
  • Angular 停止 Enter 键提交

    I am trying to stop the Enter from submitting my button and rather make it point to another function I tried trapping th
  • Angular 2:使用正则表达式进行数字验证

    我正在尝试验证 IE 11 中的数字字段
  • 角度代理配置不起作用

    我不明白我错在哪里 附 已经尝试通过这个答案修复但仍然不起作用 Angular CLI 代理到后端不起作用 https stackoverflow com questions 39809008 angular cli proxy to ba
  • 如何转义角度 HttpParams?

    在 Angular 服务中 我使用 HttpParams 将字符串发送到服务 get phone string Observable
  • 使用服务中的可观察量测试错误情况

    假设我有一个订阅服务功能的组件 export class Component ngOnInit this service doStuff subscribe data IData gt doThings data error Error g
  • 观众:覆盖单个测试的提供者(角度通用)

    我构建了一个小型角度应用程序 现在正在编写单元测试 到目前为止一切顺利 但是当我尝试测试我的 authGuard 时 我遇到了一些问题 我在用观众 https github com ngneat spectator 我在规范的提供者部分中提
  • Angular 5 Http拦截器刷新JWT令牌

    我已经实现了令牌保存 检索的逻辑 并且我也有刷新调用 问题是 当我在 HttpInterceptor 中拦截 403 时 同时进行的其他调用也会刷新令牌 我很乐意保留这些调用 直到我的令牌刷新为止 创建我所说的请求 信号量 Injectab
  • 原生元素聚焦功能不起作用

    我试图通过单击按钮自动聚焦在输入元素上 请参阅打字稿 ViewChild envFilter envFilter ElementRef onFilterSelect this envFilter nativeElement focus 在
  • Angular 2 获取当前路线

    所以我需要以某种方式检查我是否在主页上执行某些操作 而在其他页面上则不执行此操作 该组件也在所有页面上导入 如果我在主页上 如何检测该组件 Thanks 尝试这个 import Router from angular router expo
  • 如何在 Angular 项目中使用 Bootstrap?

    我开始我的第一次Angular应用程序和我的基本设置已完成 我怎样才能添加引导程序我的申请 如果您可以提供一个示例 那么这将是一个很大的帮助 如果您使用Angular CLI要生成新项目 还有另一种方法可以使 bootstrap 可访问角度
  • Angular Libraries Monorepo:是否可以为每个库使用不同的版本?

    只是一个简单的问题 我似乎找不到答案 我正在尝试构建一个应该能够使用 angular cli v8 的 monorepo 但仍然能够编译和构建为 v2 v3 v4 等制作的库 主要是组件和服务 版本之间发生了很多变化 所以让我们举个例子 V

随机推荐

  • 尝试在 WinXP 上使用 pyserial 打开串行端口 ->“访问被拒绝”

    我正在尝试使用 python 和 pyserial 通过串口将数据发送到 hplc 泵 我在 linux gentoo 的衍生版本 下测试了电缆和泵 尽管是 root 但它工作得很好 现在我必须在WinXP机器上使用代码 在尝试打开端口时我
  • Dapper.net Oracle 参数

    我正在尝试将 Dapper net 与 Oracle 一起使用 由此post我知道我们可以使用没有前缀的参数 然后 dapper 就可以同时使用sql serverand oracle 如果没有显式的 oracle 命名参数前缀 我很难让它
  • Javascript在数组中找到最接近的数字而不进行下探

    例如 我有一个数字数组 300 500 700 1000 2000 3000 我想找到最接近的数字 而不低于给定的数字 例如 搜索 2200 将返回 3000 而不是 2000 但是 如果我搜索 3200 因为数组中没有更高的值 它应该返回
  • 将php对象存储在html表单元素上并通过GET方法传递php对象?

    我可能听起来有点奇怪 但是有办法吗 例如 我有一个 PHP 对象 foo 有没有办法通过某些对象加密函数以 HTML 表单 隐藏输入 存储该对象 然后使用解密函数检索该对象 同样 我可以通过 GET 方法传递这些对象吗 就像其他地方已经指出
  • React useEffect 导致:无法对未安装的组件执行 React 状态更新

    获取数据时 我得到 无法在未安装的组件上执行 React 状态更新 该应用程序仍然有效 但反应表明我可能会导致内存泄漏 这是一个空操作 但它表明应用程序中存在内存泄漏 要修复此问题 请取消 useEffect 清理函数中的所有订阅和异步任务
  • C# 读取注册表:ProductID 在 x86 目标应用程序中返回 null。 “任何CPU”都可以正常工作

    我最近搬到了一台装有 VS 2010 的 W7 64 位机器 我的项目设置为运行Any CPU 当我将其更改为目标时x86我注意到我的一些注册表调用不再起作用 我正在尝试阅读ProductID像这样的字段 RegistryKey windo
  • Bootstrap carousel:如何同时滑动两个carousel滑块?

    我在单个页面上有三个轮播滑块 我希望它们同时移动其中两个 即两者应该同时更改滑块图像 两者都有相同数量的图像 幻灯片 这是我正在使用的代码 jQuery carousel example generic1 carousel example
  • Interface Builder 中的颜色错误

    问题 我在 Interface Builder 中设置了颜色 设置了 RGB 通道 然后对工作窗口进行了屏幕截图 在 Photoshop 中打开它 并通过颜色选择器 我在 Interface Builder 中设置 检查颜色 结果 RGB值
  • 在 64 位 Windows 7 上使用 32 位版本的 ODBC?

    我在使用 ODBC 和使用 Visual Basic 6 因此它是 32 位 编写的应用程序时遇到问题 看来VB6的ODBC库与Windows 7的64位ODBC不兼容 返回的错误码是 2147220992并且它在谈论不兼容的架构 我可以安
  • QMake CONFIG() 函数和“主动配置”

    在阅读 Qt 5 1 的文档 特别是 qmake 的文档时 我对 qmake CONFIG 函数文档中给出的解释感到困惑 我完全理解该函数的单参数版本 但双参数版本对我来说完全没有意义 我认为我的困惑来自于缺乏 活动配置 的定义 因为 Qt
  • Puppeteer 登录 page.evaluate 内

    我如何console log page evaluate中的某些内容 将其传递给节点并使用它during页面的评价 我实际上想将 page evaluate 的进度记录到控制台并向用户显示一些结果 puppeteer 12 的更新 改编自当
  • 画布被 CORS 数据和 S3 污染

    我的应用程序正在显示存储在AWS S3 出于安全原因 位于私人存储桶中 为了允许用户从浏览器中查看我生成的图像签名 URL like https s3 eu central 1 amazonaws com my bucket stuff i
  • Quartz 调度程序与设置 cron

    计划从设置 cron 作业转向 Quartz 调度程序 使用 Quartz 而不是设置 cron 的优点 缺点是什么 收到时间触发作业 Cron 还是 Quartz 关联 还有其他指点吗 我用过并且喜欢石英 以下是石英的一些优点 如果您使用
  • HTTP cookie 端口特定吗?

    我在一台机器上运行两个 HTTP 服务 我只是想知道他们是否共享 cookie 或者浏览器是否区分两个服务器套接字 当前的 cookie 规范是RFC 6265 它取代了RFC 2109 and RFC 2965 两个 RFC 现在都标记为
  • cygpath 无法将 Windows 路径转换为 ​​Linux 路径

    我正在尝试在 Windows 计算机上将文件路径转换为 Linux 和 Windows 之间的文件路径 windows 的 unix 路径工作正常 cygpath w cygdrive c CYGWIN CYGBuild build mak
  • Android - Google 云端硬盘 HTTP 请求

    我正在尝试编写一个可以将文件上传到 Google Drive 的应用程序 我选择通过原始 http 请求与此服务交互 因为我在 Android 上没有找到任何有用的 API 示例 而且它看起来比提供的库更轻量级 我用过https devel
  • 如何从 Eclipse 运行 Javah

    所以我试图在 Eclipse 中编译的 class 文件上运行 javah 工具 但我不知道该怎么做 我发现的例子只是说了一些类似 在你的类上运行 javah 的内容 但我真的不知道在 Eclipse 中哪里可以找到这样的命令行 如果有人能
  • 从句子生成 N 元语法

    如何生成字符串的 n 元语法 例如 String Input This is my car 我想用这个输入生成 n gram Input Ngram size 3 输出应该是 This is my car This is is my my
  • android 动态设置listview高度

    i have ExpandableListview inside ScrollView我知道这不好 但我也有 显示整个列表的唯一解决方案是使用代码设置其高度layoutParams relativeLayout LayoutParams 参
  • Angular Material mat-table 定义组件中可重用的列

    有人知道是否可以创建一个与 mat table 一起使用的 列 组件 我尝试为常用的列定义创建一个组件 但是在添加到表时出现错误 无法找到列选择器 我的列定义如下 Component selector iam select column t