如何在结构指令中获取属性值?

时间:2018-09-20 15:39:02

标签: javascript angular

我有一个带有外部参数的结构指令:

<div  *permissionIf ="fromMain,another: AnotherMain ;let m;"   >
     <pre>
       {{m | json}}
     </pre>
 </div>

我在主要组件中的位置:

  public fromMain = '...fromMain';
  public AnotherMain = "...AnotherMain";

directive中,我有:

  @Input('permissionIf') input1: any;
  @Input('permissionIfAnother') input2: any;

然后创建视图:

const context = { $implicit: { num: 2, value: this.input1, another: this.input2, mmmVal: "HOW ?" } };
let h = this.viewRef.createEmbeddedView(this.templateRef, context);

所以-我确实正确看到了传递的值:

{
  "num": 2,
  "value": "...fromMain",
  "another": "...AnotherMain",
  "mmmVal": "HOW ?"
}

一切正常

但是现在我想向结构指令添加一个属性:(注意mmm="3"

<div  *permissionIf ="fromMain,another: AnotherMain ;let m;" mmm="3" >
  ...
</div>

问题:

如何在结构指令代码中将属性值放入context中?

我设法通过:

ngOnInit(){

const context = { $implicit: { num: 2, value: this.input1, another: this.input2, mmmVal: "HOW ?" } };
let h = this.viewRef.createEmbeddedView(this.templateRef, context);
console.log(h.rootNodes[0].getAttribute('mmm')); //3

}

但是现在,我无法将其传递给context

如何将属性值设置为上下文?

我希望看到:

{
  "num": 2,
  "value": "...fromMain",
  "another": "...AnotherMain",
  "mmmVal": "3"  <------
}

OnlineDemo

0 个答案:

没有答案