模板引用變量
需求:
1、當用戶在組件AppComponent(舉例)的input 框輸入時要求在頁面上同步顯示用戶輸入值。
2、將用戶輸入的值傳遞到事件中,被獲取進行一系列操作。
第一種方法:DOM 事件攜帶
DOM 事件攜帶可能對組件有用的信息,所有標准 DOM 事件對象都有一個target
屬性, 引用觸發該事件的元素
在事件中傳遞$event事件對象,然后通過 $event.target.value可以獲取該值。
類型化事件對象揭露了重要的一點,即反對把整個 DOM 事件傳到方法中,因為這樣組件會知道太多模板的信息。
所以該方法不是最好的方法。
第二種方法:模板引用變量
為什么它叫:模板引用'變量,顧名思義就是引用模板。既然是引用變量,那么他應用了誰?這些變量提供了從模塊中直接訪問元素的能力,在標識符前加上井號 (#) 就能聲明一個模板引用變量。
優點:這個模板完全是完全自包含的。它沒有綁定到組件,組件也沒做任何事情。這里的自包含的意思是:它不用與Component進行交互。
何時更新綁定
你可能會思考? 既然他不用與Component進行交互,豈不是 (keyup)="doSomething" 這個綁定表達式也可以省略,答案是錯誤的!
原因:只有在應用做了些異步事件(如擊鍵),Angular 才更新綁定(並最終影響到屏幕)
本例代碼將keyup
事件綁定到了數字0,這是可能是最短的模板語句。 雖然這個語句不做什么,但它滿足 Angular 的要求,所以 Angular 將更新屏幕。
看看 AppComponent里面什么也不寫,也能完成交互效果。
模板中(template or templateUrl)this 的指向問題?
模板中this指向,他所屬的component類,本例中的this 指向 Appcomponent,你可以在控制台中打印並查看