<input type="text" [value]="value" #name>
1. 模板引用變數可以是Angualr模板中的DOM元素、Angular元件(指令),元素,TemplateRef ,甚至Web元件的引用,而它具體是什麼,則取決於它所依附的元素(不使用指令進行幹預時) 。如前文範例程式碼中的範本引用變數name
就是<input>
這一DOM元素的引用。 【相關教學推薦:《angular教學》】
<app-component #component [input]="variable"></app-component> {{ component.input }} {{ component.func() }}
透過模板引用變數我們獲得了app-component
元件的實例引用,這使得我們可以輕鬆地在模板中存取app-component
元件內部的成員。
2. Angular 根據你所宣告的變數的位置為模板變數賦值:
如果在元件上宣告變數,變數就會引用該元件實例。
如果在標準的HTML 標記上宣告一個變數,則變數就會引用該元素。
如果你在<ng-template>
元素上宣告變量,該變數就會引用一個TemplateRef
實例來代表此模板。
如果變數在右邊指定了一個名字,例如#var="ngModel"
,那麼變數就會引用所在元素上具有這個exportAs
名字的指令或元件。
3. 將NgForm
與模板變數一起使用<br/> 這裡的NgForm
指令示範如何透過引用指令的的exportAs
名字來引用不同的值。在下面的例子中,模板變數itemForm
在HTML 中分別出現了三次。
<form #itemForm="ngForm" (ngSubmit)="onSubmit(itemForm)"> <label for="name">Name</label> <input type="text" id="name" class="form-control" name="name" ngModel required /> <button type="submit">Submit</button> </form> <div [hidden]="!itemForm.form.valid"> <p>{{ submitMessage }}</p> </div>
*如果沒有ngForm 這個屬性值,itemForm 引用的值將會是<form>
元素。而Com 和
Directive
之间的差异在于Angular 在没有指定属性值的情况下,Angular 会引用Component
,而Directive
不会改变这种隐式引用(即它的宿主元素)。(还没读懂什么意思.......
而使用了NgForm
之後, itemForm
就是對NgForm 指令的引用,可以用它來追蹤表單中每一個控制項的值和有效性。
與原生的<form>
指令
form
itemForm.form.valid
NgForm
form
NgForm
在列表組件的input框裡引用ngxQuery的executeQuery()方法。當然如果我們要在ts中使用模板引用變量,就要使用@ViewChild和@ViewChildren是Angular提供給我們的裝飾器。
我們在ts中透過模板變數名獲取獲取到ngxQuery組件:
在ts中就可以直接呼叫ngxQuery的ExecuteQuery()方法,當有參數傳入時刷新列表:
(有關ViewChild裝飾器的有關內容可以移步******)
對於父子組件之間,模板引用變量也可以直接用:
buGroup是bugroupSelectComponent中的一個數組,通過父子組件把其作為模板引用變量傳過來:
在父組件ts中取得到子組件的值並使用: