我的简化目标是构建一个组件,它是一个带有项目模板的列表.例如.:

<list>项目</list>

这是我的代码:

import {bootstrap} from 'angular2/platform/browser';
import {Component} from 'angular2/core';

@Component({
  selector: 'list',
  template: `
    <ul>
      <li *ngFor="let i of 项目s" >
        <ng-content></ng-content>
      </li>
    </ul>
  `
})
class List {
  项目s = [1, 2, 3];
}

@Component({
  selector: 'app',
  directives: [List],
  template: '<list>项目</list>'
})
class App { }

bootstrap(App, []);

预期结果:

  • 项目
  • 项目
  • 项目

实际结果:


推荐答案

我找到了三种方法

@Component({
   selector: 'dynamic-list',
   template: '<div *ngFor="#item of items" *ngForTemplate="itemTemplate"></div>'
})    
export class DynamicListComponent {

  @ContentChild(TemplateRef)
  public itemTemplate: TemplateRef;

  @Input()
  public items: number[];
}




<dynamic-list [items]="items">
  <div template="#item">
      Inline template item #: {{item}}
  </div>
</dynamic-list> 

输出:

Inline template item #: 1
Inline template item #: 2
Inline template item #: 3
Inline template item #: 4

普朗克:https://plnkr.co/edit/ollxzUhka77wIXrJGA9t?p=preview

看更多https://github.com/ilio/ng2-dynamic-components/blob/master/README.md

Typescript相关问答推荐

判断对象A中存在的对象B的键是否存在对象A中键的另一个数组值中

即使子网是公共的,AWS CDK EventBridge ECS任务也无法分配公共IP地址

忽略和K的定义

Vue SFC中的多个脚本块共享导入的符号

如何表示多层深度的泛型类型数组?

分解对象时出现打字错误

使用订阅时更新AG网格中的行

类型TTextKey不能用于索引类型 ;TOption

如何在NX工作区项目.json中设置类似angular.json的两个项目构建配置?

为什么&;(交集)运算符会删除不相交的属性?

返回嵌套props 的可变元组

有没有办法防止类型交集绕过联合类型限制?

为什么TypeScrip不能解析对象析构中的赋值?

如何将类似数组的对象(字符串::匹配结果)转换为类型脚本中的数组?

如何编辑切片器以使用CRUD调用函数?

如何在Angular /字体中访问API响应的子元素?

Karma Angular Unit测试如何创建未解析的promise并在单个测试中解决它,以判断当时的代码是否只在解决后运行

显式推断对象为只读

TypeScript是否不知道其他函数内部的类型判断?

Typescript 和 Rust 中跨平台的位移数字不一致