首頁  >  文章  >  web前端  >  淺談Angular中@ViewChild的用法

淺談Angular中@ViewChild的用法

青灯夜游
青灯夜游轉載
2021-07-21 10:49:144092瀏覽

本篇文章帶大家了解一下Angular中@ViewChild,介紹一下@ViewChild的使用方法。

淺談Angular中@ViewChild的用法

簡單來說

個人對@ViewChild的理解就是:它是指代,可以透過這個指代,得到這個元件或元素。並且我們可以使用得到的這個組件的值和方法。 【相關教學推薦:《angular教學》】

為了更直覺的知道它是做什麼,直接上程式碼

透過@ViewChild取得子元件,得到子元件的值、呼叫子元件的方法

子元件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

透過@ViewChild取得某個元素

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標籤中的字體顏色變成紅色
淺談Angular中@ViewChild的用法

特別提醒

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中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除