2016-10-11 24 views
1

我試圖用通過在函數div文本angular2從DIV獲取文字和傳遞給函數

我有這個在我的模板

<div (click)="logThis(this.text)">test</div> 

和組件

logThis(x: any){ 
     console.log(x); 
} 

如果我會放一些文字而不是this.text它記錄沒有任何問題

我已經試過THIS.VALUE很好,但它記錄未定義

其他我試圖添加<div #test (click)="logThis(test.text)">test</div>但同樣的結果

回答

3

不能在組件的模板中使用this。你的模板變量的做法是正確的,雖然,但我認爲沒有text屬性:

<div (click)="logThis(div.innerText)" #div>test</div> 
<div (click)="logThis(div.textContent)" #div>test</div> 
1

這裏組件添加你的函數參數的元素,讓內部文本或HTML內的example。如果你想讓這個更動態,你可以創建一個指令。

@Component({ 
     selector: 'my-app', 
     template: ` 
     <div> 
      <h2 #container (click)="GetContainerText(container)">Hello Container </h2> 
      <div #container2 (click)="GetContainerText(container2)">Hello Container 2</div> 
      <span #container3 (click)="GetContainerText(container3)">Hello Container 3</span> 
     </div> 
     `, 
    }) 
    export class App { 
     constructor() { 
     } 

     GetContainerText(_container:HtmlElement){ 
     let _containerText = _container.innerText; 
     let _containerHTML = _container.innerHTML; 
     } 
    } 

爲什麼你要這樣做?也許如果你創建一個變量並綁定在html上對你來說更簡單。 HTML用於查看,而不是編碼。您從HTML獲得的所有內容都必須是輸入。 90%的時間你做不同的事情是錯誤的,必須考慮更簡單的方法。