如何让实验性 ngTemplateOutlet 发挥作用?

2023-12-28

我正在尝试在 Angular2 中构建一个列表组件,该组件从组件的用户那里获取项目、列和项目字段的模板。所以我正在尝试使用ngTemplateOutlet and ngOutletContext(我读过的都是实验性的)。但我无法让它发挥作用。

这是一个简化的组件,用于演示我正在尝试执行的操作:

<div *ngFor="let item of items>
  <span *ngFor="let column of columns>
    <template [ngOutletContext]="{ item: item }" 
              [ngTemplateOutlet]="column.templateRef"></template>
  </span>
</div>

下面是该组件的用法:

<my-component [items]="cars" [columns]="carColumns">
  <template #model>{{item.model}}</template>
  <template #color>{{item.color}}</template>
  <template #gearbox>{{item.gearbox}}</template>
</my-component>

这是示例数据:

cars = [
  { model: "volvo", color: "blue", gearbox: "manual" },
  { model: "volvo", color: "yellow", gearbox: "manual" },
  { model: "ford", color: "blue", gearbox: "automatic" },
  { model: "mercedes", color: "silver", gearbox: "automatic" }
];

carColumns = [
  { templateRef: "model" },
  { templateRef: "color" },
  { templateRef: "gearbox" }
];

这是一个根据 Günters 评论调整代码后重现问题的 plunker:https://plnkr.co/edit/jB6ueHyEKOjpFZjxpWEv?p=preview https://plnkr.co/edit/jB6ueHyEKOjpFZjxpWEv?p=preview


您需要这样做:

@Component({
  selector: 'my-component',
  template: `
    <div *ngFor="let item of items">
      <span *ngFor="let column of columns">
        <template [ngTemplateOutlet]="column.ref" [ngOutletContext]="{ item: item }"></template>
      </span>
    </div>`
})
export class MyComponent {
  @Input() items: any[];
  @Input() columns: any[];
}

@Component({
  selector: 'my-app',
  template: `
    <div>
      <my-component [items]="cars" [columns]="columns">
        <template #model let-item="item">{{item?.model}}</template>
        <template #color let-item="item">{{item?.color}}</template>
      </my-component>
    </div>`
})
export class App {
  @ViewChild('model') model;
  @ViewChild('color') color;
  cars = [
      { model: "volvo", color: "blue" },
      { model: "saab", color: "yellow" },
      { model: "ford", color: "green" },
      { model: "vw", color: "orange" }
    ];

  ngAfterContentInit() {
    this.columns = [
      { ref: this.model },
      { ref: this.color ]
    ];
  }
}

Plunker https://plnkr.co/edit/Jh4v8pYX8GZrsxIELLp3?p=preview

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

如何让实验性 ngTemplateOutlet 发挥作用? 的相关文章

  • Rxjs 带延迟功能的重试

    我正在尝试使用retry with delay函数 我预计函数会在 1000 毫秒延迟后调用 但事实并非如此 这里可能会出现什么错误 查看控制台输出 同一时间 16 22 48 我预计有 16 22 48 16 22 59 canCreat
  • 有角材料 2 卡可滚动

    如何使mat card材质2组件内的内容可以滚动 我在材料2网站上没有找到任何内容 这不是内置功能 要使内容可滚动 请设置高度
  • 如何访问父组件上定义的 ViewChild 引用 - Angular 2

    我在应用程序模板 根组件的模板 中定义了一个微调器 加载器元素 例如 div div 在我的子组件中 我尝试使用访问它 ViewChild但这似乎总是返回未定义 我在子组件中访问它的代码是 ViewChild spinner read Vi
  • Angular 2:将路由器出口设计为宽度 < 100%

    我正在构建一个 Angular 2 应用程序 该应用程序将为宽度超过 500 的屏幕提供侧导航栏 为宽度小于 500 的屏幕提供底部导航栏 现在 我尝试为侧栏分配 20 的宽度 即 80 应用内容 我遇到的问题是路由器出口内容 即实际的应用
  • 如何使用 asp.net core,角度 4 修复“无法获取未定义或空引用的属性‘应用’”错误

    我正在使用 aspnetcore spa 模板 使用命令 dotnet new Angular 创建一个项目 看https jonhilton net 2017 02 21 create a vs2017 angular 2 and net
  • Angular 2 insideHTML 忽略表单标签

    我正在为 Angular 2 构建一个模态 因为没有像 Angular 1 x 这样的原生模态 而且我取得了很好的进展 我创建了一个模态组件 可以显示和隐藏 并且有一个主体输入唯一不起作用的是 由于某种原因 表单元素被从渲染的 html 中
  • 无法从角度路由器获取路径或 url

    我无法从 ActivatedRoute 或 Router 导入中获取 URL 或路径 它为路径 输出空白 为 URL 输出 我记得使用的是工作版本 唯一捕获正确路由的是Router events 我也无法订阅ActivatedRoute 中
  • 在 Angular 6 中将多个值传递给管道

    我需要使用管道在 Angular 6 中创建一个搜索表单 并且必须将多个参数传递给管道 nameSearch emailSearch roleSeach accountSearch tr tr 这是我的烟斗 Pipe name search
  • Angular 2:当我通过浏览器刷新时发生404错误[重复]

    这个问题在这里已经有答案了 我已将单页应用程序存储在服务器中名为 myapp 的文件夹中 我已将库中的 URL 更改为http example com myapp http example com myapp 60 我的项目有两个页面 所以
  • Angular 8 中的 ag-grid 单元格内未显示字体真棒图标

    我正在尝试学习 Angular 因此遵循有关安装和使用 ag grid 和 Font Awesome 的指南 但我无法使用 cellRenderer 在 ag grid 单元格内显示 fa icon 如果我在网格之外使用相同的图标 HTML
  • 如何使用EventManager监听Angular中的window.resize事件?

    我从这个 stackoverflow 借用了一些代码 角度窗口调整大小事件 https stackoverflow com questions 35527456 angular window resize event答案的作者说我应该使用事
  • Angular:DOM更新后调用方法

    我正在从 html 调用一个方法 调用休息服务 来增加 减少屏幕上的计数 现在我想调用另一个方法 即 getThreshold 来检查计数是否达到阈值 如果是 我想显示一条确认消息 我想首先更新屏幕上的计数 然后调用该函数来检查它是否达到阈
  • Angular 没有 NameService 提供者

    我在将类加载到 Angular 组件中时遇到问题 我已经尝试解决这个问题很长时间了 我什至尝试过将所有内容合并到一个文件中 我所拥有的是 应用程序 ts
  • Angular:先完全安装 Service Worker

    我正在用 Angular 编写一个 PWA 需要准备好从单页加载中离线 Service Worker 生命周期的文档指定 Worker 已安装但不会立即激活 https developers google com web fundament
  • 从 Angular 2 动态表单的 API 设置值

    我正在尝试开始在 Angular 2 中创建动态表单 并且我正在使用 Angular 食谱中的设置here https angular io docs ts latest cookbook dynamic form html作为我的起点 我
  • 如何从 Angular 7 中的另一个组件更新视图?

    我想从导航栏刷新我的卡集 该导航栏是应用程序组件 html所以我准备了刷新 功能 当它被调用时 它会更新变量 Cards 但不会将其呈现在ngFor在 html 元素上mainView html 如果我从 html 元素调用 它会渲染更新的
  • 如何使用 Web 套接字和 Angular CLI 设置代理

    我有一个使用 Angular CLI 构建的简单 Web 应用程序 我希望它使用网络套接字与后端通信 我已经编写了后端 并使用一个简单的 index html 页面进行了测试 服务器可以在套接字上发送和接收该页面 在我的 angular c
  • 如何在Angular2中正确使用依赖注入(DI)?

    我一直在试图弄清楚 DI 依赖注入在 Angular2 中是如何工作的 每次当我尝试将服务 或类注入我的组件时 我都会遇到很多问题 从不同的谷歌搜索文章中 我需要使用providers 在组件配置中 或者有时我需要使用 Inject 在我的
  • 如何让Angular2绑定innerHTML中的组件

    我想创建一个组件myApp它将把控制器上的属性中的 HTML 嵌入到其模板中 但是 其中一些 HTML 可能包含其他组件选择器 import InfoComponent from Component selector myApp templ
  • Angular 2 runOutsideAngular 仍然改变 UI

    从我的理解来看runOutsideAngular https angular io docs ts latest api core index NgZone class html runOutsideAngular anchor 如果我需要

随机推荐

  • 如何使用导入包的结构作为 go 中的类型

    我正在一个项目中工作并在 go 中使用 database sql 包 我想使用在包 database sql 中声明的结构 DB 作为我的 func 的参数 这样我就可以使用 sql Open 的返回值并作为我的 func 的参数 有可能吗
  • 与 2017 年智能感知不工作 C# 和 XAML

    我有一个奇怪的问题 我似乎无法解决 我的 XAML 智能感知不再显示 并且后面的代码仅显示预制成员 我所做的类和方法没有出现 此外 Visual Studios 无法识别其他页面 也无法识别导航 我尝试转到 工具 gt 文本编辑器 gt C
  • C# SqlCommand Connection.Open() 问题

    我有一个 C ASP NET Web 应用程序 我正在尝试使用数据库表中的列填充 ASP DropDownList My Code using System using System Collections Generic using Sy
  • Android Studio - 如何更改布局

    在 Eclipse 中 我可以右键单击我的布局 例如 LinearLayout 然后单击 更改布局 在 Android Studio 中 我没有看到类似的东西 我确实看到了变形 但现在它会随时出现 例如 如果您使用RelativeLayou
  • Windows 上的 Nginx 使用 WSGI

    现在我决定使用 Nginx 作为我最喜欢的网络服务器来部署 Django 我得到了一些 迷雾 我在 Windows 上 也就是说 当我尝试使用 Django 作为 FastCGI 时出现错误 似乎 Flup 无法加载 它给我错误 从网站上看
  • QSqlDatabase::open() 总是返回 true

    我正在尝试使用 Qt 框架连接到 SQL 数据库 不幸的是 尽管没有建立连接 db open 总是返回true 您可以设置任何密码 主机名等 我从对数据库没有任何影响的查询中得出这一点 我在 Ubuntu 14 04 上使用 LAMPP 我
  • 垂直对齐图像

    我有一个包含图像和 p 标签的 div 如下所示 我想根据段落的行数将图像垂直对齐在 div 中间 垂直对齐不起作用 我现在正在使用 JavaScript 来计算要添加到 margin top 的量 但更愿意使用 CSS 有任何想法吗 di
  • 使用 Django + Celery 更新 Haystack 搜索索引

    在我的 Django 项目中 我使用 Celery 我将 crontab 中的命令切换为定期任务 它运行良好 但它只是调用模型上的方法 是否也可以通过定期任务更新我的 Haystack 索引 有人这样做过吗 manage py update
  • x64 本机工具命令提示符和 x64 交叉工具命令提示符之间有什么区别?

    我在 64 位 Windows 8 1 上安装了 32 位 Visual Studio 2013 我有 5 个命令提示符 VS2013 的开发人员命令提示符 VS2013 ARM 交叉工具命令提示符 VS2013 x64 交叉工具命令提示符
  • 具有多个命令的 CTest

    我正在使用 CTest 构建一些测试 通常 我可以简单地通过以下行设置测试 ADD TEST Test Name executable args 但是 我遇到了一个问题 我有一些测试需要运行两个命令才能工作 有什么方法可以在一个 ctest
  • TwoWay 或 OneWayToSource 绑定无法对只读属性起作用

    我有一个只读属性 需要在文本框中显示 并在运行时收到此错误 我已经设置了IsEnabled False IsReadOnly True 没有运气 其他搜索说只读应该修复它 但不适合我 我有一个丑陋的解决方法 添加一个虚拟设置器 没有代码很难
  • Internet Explorer 中的图像数据集

    我有一个数组缓冲区 名为MEM 大于画布宽度 高度尺寸 我想将 arrayBuffer 数据绘制到画布上 imgData data set 应该可以工作 因为 imgData data 是一个 Uint8Array 它具有 set 方法 它
  • 如何在 ASP.NET Core 中获取 HttpContext.Current? [复制]

    这个问题在这里已经有答案了 我们目前正在使用 ASP NET Core 重写 转换我们的 ASP NET WebForms 应用程序 尽量避免重新设计 有一个部分我们使用HttpContext在类库中检查当前状态 我怎样才能访问HttpCo
  • 在invalidatelat观察者内增加reactivevalue

    我正在尝试构建闪亮的应用程序来进行一个非常简单的测验 我有一个包含 10 个问题的 data frame 用户点击回答 0 或 1 它一直有效 直到我尝试实施timer 倒数以便下一个问题在 5 秒后自动出现 使用invalidateLat
  • 如何在 netlogo 上创建计时器?

    对于我的迷宫项目 我想创建一个监视器按钮来跟踪海龟从开始到结束所需的时间 我该如何为计时器编写代码 查看reset timer and timer并在文档中 在迷宫设置期间 执行reset timer 在迷宫运行过程中 您可以使用以下命令检
  • 解构 C# 元组

    是否可以像 F 一样在 C 中解构元组 例如 在 F 中 我可以这样做 in F let tupleExample 1234 ASDF let x y tupleExample x has type int y has type strin
  • 如何在 Delphi 中使用 dll 导出的 C++ 类

    有没有办法在 Delphi for win32 中使用 win32 dll 导出的 C 类 是否有其他方法来归档类似的东西 COM NET 您无法导入类 您只能导入函数 鲁迪 维尔修斯 Rudy Velthuis 就该主题撰写了详细的文章
  • Spring Boot应用程序启动后立即关闭

    我正在尝试构建一个简单的 Spring Boot 应用程序 当我运行 Spring Boot 应用程序时 它在启动后立即关闭 下面是控制台日志 Spring Boot v1 4 1 BUILD SNAP
  • 符号导数和积分

    我想集成功能f4关于x然后求新函数的导数t 我可以用数值方法计算积分 有没有办法在R中以符号方式计算这个积分和导数 lambda 1 ci 1 aa lt function u k t f4 lt function x f1 lt func
  • 如何让实验性 ngTemplateOutlet 发挥作用?

    我正在尝试在 Angular2 中构建一个列表组件 该组件从组件的用户那里获取项目 列和项目字段的模板 所以我正在尝试使用ngTemplateOutlet and ngOutletContext 我读过的都是实验性的 但我无法让它发挥作用