使用组件时是否可以访问组件变量?

米格尔·莫拉

我有一个 Angular 的 7 组件模板,如下所示:

<div class="measure">
  <ng-content select="[label]"></ng-content>
  <div class="chart">
    <div class="state" [style.width.%]="progress">&nbsp;</div>
  </div>
  <ng-content select="[value]"></ng-content>
</div>

如您所见progress,该组件中有一个变量:

export class ProgressComponent implements OnInit {

  @Input() current: any;
  @Input() maximum: any;
  @Input() minimum: any;

  progress: number;

  ngOnInit() {
    // Some code
  }
}

有没有办法progress在使用组件时使用变量

<mk-progress [minimum]="0" [maximum]="100" [current]="50" class="test">

  <span label>Label</span>

  <span value>{{progress}}%</span>

</mk-progress>

我试图在代码行中使用它:

 <span value>{{progress}}%</span>
jo_va

使用<ng-content>. 但是,您可以通过投影模板而不是常规内容来实现它

然后,您的组件将呈现这些模板而不是ng-contentvia<ng-container>标记为ngTemplateOutlet并为这些模板设置上下文。

通过使用结构指令(*在指令前添加 a ),您可以有效地用模板包装注入的内容。

通过@ContentChild在您的组件中使用,您可以引用这些模板来实例化它们。

为了在使用组件时访问模板上下文,您可以使用let模板上的关键字为implicit上下文设置别名,然后引用它。

<div class="measure">
    <ng-container *ngTemplateOutlet="labelTemplate; context: templateContext"></ng-container>
    <div class="chart">
        <div class="state" [style.width.%]="progress">&nbsp;</div>
    </div>
    <ng-container *ngTemplateOutlet="valueTemplate; context: templateContext"></ng-container>
</div>
export class ProgressComponent implements OnInit {
    @Input() current: any;
    @Input() maximum: any;
    @Input() minimum: any;

    @ContentChild(LabelDirective, { read: TemplateRef }) labelTemplate;
    @ContentChild(ValueDirective, { read: TemplateRef }) valueTemplate;

    progress: number;

    templateContext = { $implicit: this };

    ngOnInit() {
        // Some code
    }
}
<mk-progress [minimum]="0" [maximum]="100" [current]="50" class="test">
  <span *label>Label</span>
  <span *value="let item">{{ item.progress }}%</span>
</mk-progress>

如果未提供模板,此技术还允许您提供默认内容:

<ng-container *ngTemplateOutlet="valueTemplate ? valueTemplate : defaultTemplate; context: templateContext">
</ng-container>
<ng-template #defaultTemplate>
  default thing to show
</ng-template>

有关更多详细信息,请参阅此文章

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

导入不同文件(作为库)时,是否可以访问React组件的状态?

来自分类Dev

访问父组件变量

来自分类Dev

从方法访问组件变量

来自分类Dev

访问父组件变量

来自分类Dev

是否可以在自己的组件中使用ListContext?

来自分类Dev

是否可以使用 ref 访问数组映射函数内的 React 组件?

来自分类Dev

使用 *ngIf 时保留 Angular 组件变量

来自分类Dev

是否可以使用组件宿主属性来设置局部变量?

来自分类Dev

使用Svelte是否可以在多个组件之间绑定相同的变量?

来自分类Dev

是否可以使用组件宿主属性设置局部变量?

来自分类Dev

是否可以访问.vue组件内的Web Workers

来自分类Dev

可以访问 React 组件状态的样式组件?

来自分类Dev

当父组件使用ng-content Angular时,子组件的可访问性父组件

来自分类Dev

尝试从另一个组件访问组件的变量时获取 NullInjectorError

来自分类Dev

角度组件完成加载时是否可以得到通知?

来自分类Dev

构建自定义Blazor组件时是否可以使组件参数成为必需?

来自分类Dev

使用React Router时无法访问App组件

来自分类Dev

使用React Hooks卸载组件时如何访问状态?

来自分类Dev

使用jQuery在React组件内部设置样式是否可以

来自分类Dev

角度-是否可以在子组件中使用内容投影?

来自分类Dev

是否可以使用ReasonReact构建单个组件?

来自分类Dev

是否可以完全禁止Symfony安全组件使用会话?

来自分类Dev

是否可以完全禁止Symfony安全组件使用会话?

来自分类Dev

使用jQuery在React组件内部设置样式是否可以

来自分类Dev

是否可以在 ember 控制器或组件中使用 jquery

来自分类Dev

Angularjs:是否可以使用嵌套的 dom 作为组件的模板?

来自分类Dev

是否可以只安装我们使用的 Material 组件?

来自分类Dev

是否只有在尝试使用Python访问时才可以创建成员变量?

来自分类Dev

使用ViewEncapsulation时,是否可以使用CSS将Angular2组件“蒙皮”或“主题化”?

Related 相关文章

  1. 1

    导入不同文件(作为库)时,是否可以访问React组件的状态?

  2. 2

    访问父组件变量

  3. 3

    从方法访问组件变量

  4. 4

    访问父组件变量

  5. 5

    是否可以在自己的组件中使用ListContext?

  6. 6

    是否可以使用 ref 访问数组映射函数内的 React 组件?

  7. 7

    使用 *ngIf 时保留 Angular 组件变量

  8. 8

    是否可以使用组件宿主属性来设置局部变量?

  9. 9

    使用Svelte是否可以在多个组件之间绑定相同的变量?

  10. 10

    是否可以使用组件宿主属性设置局部变量?

  11. 11

    是否可以访问.vue组件内的Web Workers

  12. 12

    可以访问 React 组件状态的样式组件?

  13. 13

    当父组件使用ng-content Angular时,子组件的可访问性父组件

  14. 14

    尝试从另一个组件访问组件的变量时获取 NullInjectorError

  15. 15

    角度组件完成加载时是否可以得到通知?

  16. 16

    构建自定义Blazor组件时是否可以使组件参数成为必需?

  17. 17

    使用React Router时无法访问App组件

  18. 18

    使用React Hooks卸载组件时如何访问状态?

  19. 19

    使用jQuery在React组件内部设置样式是否可以

  20. 20

    角度-是否可以在子组件中使用内容投影?

  21. 21

    是否可以使用ReasonReact构建单个组件?

  22. 22

    是否可以完全禁止Symfony安全组件使用会话?

  23. 23

    是否可以完全禁止Symfony安全组件使用会话?

  24. 24

    使用jQuery在React组件内部设置样式是否可以

  25. 25

    是否可以在 ember 控制器或组件中使用 jquery

  26. 26

    Angularjs:是否可以使用嵌套的 dom 作为组件的模板?

  27. 27

    是否可以只安装我们使用的 Material 组件?

  28. 28

    是否只有在尝试使用Python访问时才可以创建成员变量?

  29. 29

    使用ViewEncapsulation时,是否可以使用CSS将Angular2组件“蒙皮”或“主题化”?

热门标签

归档