angular2结构指令,String为输入

时间:2016-09-10 08:04:57

标签: javascript angular angular2-directives

我正在尝试使用给定的示例创建结构指令 here

在这里修改传递字符串作为输入时,我在调用此指令形式标记时将'undefined'作为输入值。

@Input() set myUnless(value: String) {
    if (value=== 'something') {
      this.viewContainer.createEmbeddedView(this.templateRef);
    } else {
      this.viewContainer.clear();
    }
  }

有任何帮助实现这一目标吗?

修改 想法是创建一个hasRole指令,该指令接受一个Role as String,并根据存储在本地存储中的角色中是否找到它来返回布尔值。

实施代码是:

 <a routerLink="/list" *unless="ADMIN">
          <i class="fa fa-list"></i> <span>List</span>
 </a>

指令的代码如下:

import { Directive, Input } from '@angular/core';
import { TemplateRef, ViewContainerRef } from '@angular/core';
@Directive({ selector: '[unless]' })
export class Unless {
    constructor(
        private templateRef: TemplateRef<any>,
        private viewContainer: ViewContainerRef
    ) { }
    @Input() set unless(role: String) {
        return localStorage.getItem('roles').indexOf(role) > -1;
    }
}

1 个答案:

答案 0 :(得分:2)

您的组件的属性ADMIN实际上是undefined; - )

改为使用

*unless="'ADMIN'"