当前位置:  开发笔记 > 编程语言 > 正文

如何在angular 2指令中有条件地插入/删除主机DOM元素

如何解决《如何在angular2指令中有条件地插入/删除主机DOM元素》经验,为你挑选了1个好方法。

我想创建一个指令,决定是否应该或不应该在页面上的主机元素apppear.理想情况下,我希望它从DOM中删除元素,而不是用css隐藏/显示它.用例是:


它将使用UserService来获取currentUser角色,如果没有管理员,那么li将被删除.

我想ng-if通过将表达式传递给主要组件中的evaulate,我可以实现相同的效果(如果它仍然在角度2中可用).但是使用该指令它更具语义和优雅.

可能吗?

import {Directive} from 'angular2/angular2';

@Directive({
    selector: 'access'
})
export class Access {
 //what goes here
}

我可以在角度1(内部指令的compile函数)中轻松完成,但我怎么能在Angular 2中做到这一点?



1> Chandermani..:

此实现类似于ngIf指令.结构指令的Angular 指南(你计划创建它)给出了一个myUnless反正的例子ngIf.

您对访问的myUnless实现看起来与实现类似.

@Directive({ selector: '[access]' })
export class AccessDirective {
  constructor(
    private _templateRef: TemplateRef,
    private _viewContainer: ViewContainerRef
    ) { }
  @Input() set myUnless(condition: boolean) {
    if (condition) {
      this._viewContainer.createEmbeddedView(this._templateRef);
    } else {
      this._viewContainer.clear();
    }
  }
}

并使用它像:

  • admin-only link
  • 推荐阅读
    Gbom2402851125
    这个屌丝很懒,什么也没留下!
    DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
    Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有