国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Angular ElementRef簡介及其使用

2024-05-06 15:29:05
字體:
來源:轉載
供稿:網友

Angular 的口號是 - “一套框架,多種平臺。同時適用手機與桌面 (One framework.Mobile & desktop.)”,即 Angular 是支持開發跨平臺的應用,比如:Web 應用、移動 Web 應用、原生移動應用和原生桌面應用等。

為了能夠支持跨平臺,Angular 通過抽象層封裝了不同平臺的差異,統一了 API 接口。如定義了抽象類 Renderer 、抽象類 RootRenderer 等。此外還定義了以下引用類型:ElementRef、TemplateRef、ViewRef 、ComponentRef 和 ViewContainerRef 等。

下面我們就來分析一下 ElementRef 類:

ElementRef 的作用

在應用層直接操作 DOM,就會造成應用層與渲染層之間強耦合,導致我們的應用無法運行在不同環境,如 web worker 中,因為在 web worker 環境中,是不能直接操作 DOM。有興趣的讀者,可以閱讀一下 [Web Workers 中支持的類和方法][1] 這篇文章。通過 ElementRef 我們就可以封裝不同平臺下視圖層中的 native 元素 (在瀏覽器環境中,native 元素通常是指 DOM 元素),最后借助于 Angular 提供的強大的依賴注入特性,我們就可以輕松地訪問到 native 元素。

ElementRef 的定義

// angular-master/packages/core/src/linker/element_ref.tsexport class ElementRef<T = any> { public nativeElement: T; constructor(nativeElement: T) { this.nativeElement = nativeElement; }}

ElementRef 的應用

我們先來介紹一下整體需求,我們想在頁面成功渲染后,獲取頁面中的 div 元素,并改變該 div 元素的背景顏色。接下來我們來一步步,實現這個需求。

首先我們要先獲取 div 元素,在文中 “ElementRef 的作用” 部分,我們已經提到可以利用 Angular 提供的強大的依賴注入特性,獲取封裝后的 native 元素。在瀏覽器中 native 元素就是 DOM 元素,我們只要先獲取 my-app元素,然后利用 querySelector API 就能獲取頁面中 div 元素。具體代碼如下:

import { Component, ElementRef } from '@angular/core';@Component({ selector: 'my-app', template: `  <h1>Welcome to Angular World</h1>  <div>Hello {{ name }}</div> `,})export class AppComponent { name: string = 'Semlinker'; constructor(private elementRef: ElementRef) {  let divEle = this.elementRef.nativeElement.querySelector('div');  console.dir(divEle); }}

運行上面代碼,在控制臺中沒有出現異常,但是輸出的結果卻是 null 。什么情況 ? 沒有拋出異常,我們可以推斷 this.elementRef.nativeElement 這個對象是存在,但卻找不到它的子元素,那應該是在調用構造函數的時候,my-app 元素下的子元素還未創建。

那怎么解決這個問題呢 ?沉思中… ,不是有 setTimeout 么,我們在稍微改造一下:

constructor(private elementRef: ElementRef) { setTimeout(() => { // 此處需要使用箭頭函數哈,你懂的...   let divEle = this.elementRef.nativeElement.querySelector('div');   console.dir(divEle);  }, 0);}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 玛沁县| 正安县| 柳林县| 宝清县| 清镇市| 公主岭市| 潮安县| 房产| 伊宁县| 磐安县| 尉氏县| 周至县| 临洮县| 金沙县| 德昌县| 明光市| 香港 | 靖江市| 永川市| 全南县| 体育| 漠河县| 修水县| 石泉县| 郧西县| 韩城市| 云林县| 林州市| 垦利县| 桂阳县| 苍溪县| 竹北市| 清涧县| 毕节市| 建阳市| 中卫市| 鄂托克旗| 大城县| 名山县| 错那县| 高雄县|