本篇文章帶大家了解一下Angular中@ViewChild,介紹一下@ViewChild的使用方法。
簡單來說
個人對@ViewChild的理解就是:它是指代,可以透過這個指代,得到這個元件或元素。並且我們可以使用得到的這個組件的值和方法。 【相關教學推薦:《angular教學》】
為了更直覺的知道它是做什麼,直接上程式碼
子元件child
content:'Zita'; changeChildCon() { this.content = 'Zita1111' }
父元件parent
html <app-child></app-child> ts import { ViewChild } from '@angular/core'; @ViewChild('ChildrenView', { static: true }) childrenView: any; //ChildrenView为子组件中的#后边的值,childrenView是个名称用来指代子组件 this.childrenView.content // Zita 获取子组件中的值 this.childrenView.changeChildCon() // 执行子组件中的方法 this.childrenView.content // Zita1111
html
<figure> 我是父元素中的一个标签figure,我可以通过viewchild来获取,并且获取到我之后可以改变我的样式 </figure>
ts
import { ViewChild, ElementRef } from '@angular/core'; @ViewChild('parBele', { static: true }) eleRef: ElementRef; this.eleRef.nativeElement.style.color = 'red'; // 更改获取的dom元素的样式
那麼,透過這段程式碼,你就會在頁面中看到,figure標籤中的字體顏色變成紅色
angular8.0之後一定要加上{ static: true } 這個屬性哦,除此外,官方給這個屬性的解釋說明是:
元資料屬性:
selector - 用於查詢的指令類型或名字。
read - 從查詢到的元素讀取另一個令牌。
static - True to resolve query results before change detection runs, false to resolve after change detection. Defaults to false.
對於static,意思是:如果為true,則在執行更改檢測之前解析查詢結果,如果為false,則在更改檢測之後解析。預設false.
怎麼理解吶?
主要就在於「更改偵測」這個動作的發生節點。
例如,我們經常使用到的ngIf、ngShow指令,如果子元件中加入了這些指令,而同時static為true。那麼,當我們去捕捉指涉目標時,得到的值將是undefined
至此,鄙人針對實際項目中經常用到的@ViewChild的理解到此就Over啦…與君共勉
更多程式相關知識,請造訪:程式設計教學! !
以上是淺談Angular中@ViewChild的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!