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

首頁 > 語言 > JavaScript > 正文

Angular4 ElementRef的應(yīng)用

2024-05-06 15:21:25
字體:
供稿:網(wǎng)友

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

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

ElementRef的作用

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

ElementRef的定義

export class ElementRef { public nativeElement: any; constructor(nativeElement: any) { this.nativeElement = nativeElement; }}

ElementRef的應(yīng)用

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

首先我們要先獲取 div 元素,在文中 "ElementRef 的作用" 部分,我們已經(jīng)提到可以利用 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); }}

運行上面代碼,在控制臺中沒有出現(xiàn)異常,但是輸出的結(jié)果卻是 null 。什么情況 ? 沒有拋出異常,我們可以推斷 this.elementRef.nativeElement 這個對象是存在,但卻找不到它的子元素,那應(yīng)該是在調(diào)用構(gòu)造函數(shù)的時候,my-app 元素下的子元素還未創(chuàng)建。那怎么解決這個問題呢 ?沉思中… ,不是有 setTimeout 么,我們在稍微改造一下:

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

圖片精選

主站蜘蛛池模板: 南岸区| 穆棱市| 平和县| 万宁市| 苍山县| 沽源县| 稻城县| 湾仔区| 响水县| 万州区| 信阳市| 芦山县| 罗山县| 宜都市| 安丘市| 台山市| 东港市| 松原市| 盐亭县| 绥德县| 铜山县| 富顺县| 平定县| 商水县| 习水县| 延边| 乌拉特后旗| 怀远县| 铅山县| 汨罗市| 秭归县| 石狮市| 宿迁市| 赣榆县| 凉山| 陆川县| 浪卡子县| 石狮市| 汽车| 龙州县| 新泰市|