2017-03-01 59 views
0

如何在我自己的定製結構指令中訪問Template Input Variables角度2:如何訪問結構指令中的模板輸入變量

@Directive({ 
    selector: "[myCustomDirective]" 
}) 
export class MyCustomDirective { 
} 

文檔說A template input variable is a variable whose value you can reference within a single instance of the template.

<div *myCustomDirective="let visible = true"></div> 

我知道模板現在有一個叫let-visible輸入,但我怎麼訪問它?

-------------------編輯-------------------

我想能夠使用結構指令接受多個輸入。那可能嗎?

我想一個輸入被分配到myCustomDirective本身和一個visible這就是爲什麼我試圖使用let visible類似語法ngFor一樣。

+0

你要訪問您的自定義結構指令裏面的「看得見」的價值? – user6801750

+0

是的。那可能嗎? – takeradi

回答

1

您還必須在指令模塊的頂部導入Input

@Directive({ 
    selector: "[myCustomDirective]" 
}) 
export class MyCustomDirective { 
    @Input() 
    set myCustomDirective(isVisible: boolean): void { 
    // do something with isVisible 
    } 
} 

指令的用法。

<div *myCustomDirective="true"></div> 
+0

但我確實提到我正在創建自己的自定義結構指令。這就是爲什麼它帶有'*'字符。 – takeradi

+0

@takeradi - 我刪除了評論,但我會留下其餘的,因爲考慮到它適用於任何一種類型的指令。 – Igor

+0

所以你的答案對我的情況無效。此外,我不確定您是否可以在'div'上使用'[visible]'輸入。 Div不是一個自定義組件,那麼如何給它分配一個'Input'? – takeradi

0

你可以試試下面的:

  import { Directive,Input,...} from '@angular/core'; 
      @Directive({ 
       selector: "[myCustomDirective]" 
      }) 
      export class MyCustomDirective { 

      //using the Input decorator, we can accept the value of the property (in our case, it is myCustomDirective)and //use it inside our directive class. 
      @Input('myCustomDirective') 
       private visible: boolean; 

       //console.log(this.visible); 

      } 

      // Use it, maybe like this: 
      <div *myCustomDirective="true"></div>