首頁 web前端 js教程 Angular2進階之如何避免Dom迷思

Angular2進階之如何避免Dom迷思

Apr 03, 2018 am 09:33 AM
迷思 避免

這篇文章主要介紹了Angular2進階之如何避免Dom迷思,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧

前言

#Angular2的設計目標本來就是要讓瀏覽器和DOM獨立。 DOM是複雜的,因此使元件與它分離,會讓我們的應用程序,更容易測試和重構。為了支援跨平台,Angular也透過抽象封裝了不同平台的差異。

內容

1.為什麼不能直接操作DOM?

Angular2採用AOT靜態編譯模式,這種形式下需要我們的模板類型必須是穩定和安全的,直接使用javascript和jquery語言是不穩定,因為他們的編譯不會事先發現錯誤,所以angular2才會選擇javascript的超集typescript語言(這種語言編譯期間就能發現錯誤)。

2.三種錯誤操作DOM的方式:

#
@Component({ ... })
export class HeroComponent {
 constructor(private _elementRef: ElementRef) {}

 doBadThings() {
  $('id').click(); //jquery
  this._elementRef.nativeElement.xyz = ''; //原生的ElementRef
  document.getElementById('id'); //javascript
 }
}
登入後複製

## 3.Angular2如何DOM操作的機制?

為了能夠支援跨平台,Angular 透過抽象層封裝了不同平台的差異。例如定義了抽象類別 Renderer、Renderer2 、抽象類別 RootRenderer 等。另外也定義了以下參考類型:ElementRef、TemplateRef、ViewRef 、ComponentRef 和 ViewContainerRef 等。


4.正確操作DOM的方式(ElementRef和Renderer2):

product.component.html

<p>商品信息</p>
<ul>
 <li *ngFor="let product of dataSource| async as list">
  {{product.title}}
 </li>
</ul>
<p #dia>
</p>
登入後複製

product.component.ts

import { Component, OnInit,Renderer2, ViewChild,ElementRef,AfterViewInit} from &#39;@angular/core&#39;;
@Component({
 selector: &#39;app-product&#39;,
 templateUrl: &#39;./product.component.html&#39;,
 styleUrls: [&#39;./product.component.css&#39;]
})

export class ProductComponent implements OnInit,AfterViewInit {
 @ViewChild(&#39;dia&#39;) dia:ElementRef ;定义子试图
 ngOnInit() {
 /**1.
 *创建一个文本
 */
  this.dia.nativeElement.innerHTML="这只是一个测试的文档";

 /**2.
  *添加click事件
  */
 let ul=this.element.nativeElement.querySelector(&#39;ul&#39;);
  this.render2.listen(ul,"click",()=>{
   this.render2.setStyle(ul,"background","blue");

ngAfterViewInit(){
/**3.
 *修改背景颜色
 */
 let li=this.element.nativeElement.querySelector(&#39;ul&#39;);
 this.render2.setStyle(li,"background","red");
 }
}
登入後複製

#總結

學習一種語言其實我們首先應該去遵循他的規範,接受他和之前語言的不同之處,然後再去深入理解和之前的方式不一樣在哪裡,為什麼這麼做,否則我們無法理解這種語言的妙處,希望對你有幫助!




##############################################################################################################

以上是Angular2進階之如何避免Dom迷思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java錯誤:編解碼錯誤,如何解決與避免 Java錯誤:編解碼錯誤,如何解決與避免 Jun 24, 2023 pm 05:27 PM

Java是一門非常流行的程式語言,許多專案都是由Java編寫的。然而,當我們在開發過程中遇到「編解碼錯誤」(EncodingandDecodingErrors)時,可能會感到困惑和懷疑。在本文中,我們將介紹Java編解碼錯誤的原因、如何解決和避免這些錯誤。什麼是編解碼錯誤?在Java開發過程中,我們經常需要處理文字和文件。然而,不同的文本和文件可能使

Java錯誤:JavaFX視圖錯誤,如何處理與避免 Java錯誤:JavaFX視圖錯誤,如何處理與避免 Jun 25, 2023 am 08:47 AM

JavaFX是Java平台的使用者介面框架,類似Swing,但卻更現代化、更靈活。然而在使用時可能會遇到一些視圖錯誤,本文將介紹如何處理和避免這些錯誤。一、JavaFX視圖錯誤的類型在使用JavaFX時,可能會遇到以下幾種視圖錯誤:NullPointerException這是最常見的錯誤之一,通常在嘗試存取未初始化或不存在的物件時發生。這可能

Java錯誤:JDBC錯誤,如何解決與避免 Java錯誤:JDBC錯誤,如何解決與避免 Jun 24, 2023 pm 02:40 PM

隨著Java的廣泛應用,Java程式在連接資料庫時經常會出現JDBC錯誤。 JDBC(JavaDatabaseConnectivity)是Java中用於連接資料庫的程式設計接口,因此,JDBC錯誤是在Java程式與資料庫互動時遇到的錯誤。以下將介紹一些最常見的JDBC錯誤及如何解決和避免它們。 ClassNotFoundException這是最常見的JDBC

PHP語言開發中避免陷入無限循環的方法 PHP語言開發中避免陷入無限循環的方法 Jun 10, 2023 pm 02:36 PM

在PHP語言開發中,經常會遇到無限循環的情況,它會無限制地執行某些程式碼,導致程式崩潰甚至伺服器崩潰。本文將介紹一些避免陷入無限循環的方法,幫助開發人員更好地解決這個問題。 1.避免在循環中進行無限遞歸調用當在循環中調用一個函數或方法時,如果函數或方法中又包含了循環語句,就會形成無限遞歸調用,導致程式崩潰。為避免這種情況的發生,可以在遞歸呼叫函數或方法時,添加一

關於Python變數命名規則的常見誤解及解決方案 關於Python變數命名規則的常見誤解及解決方案 Jan 20, 2024 am 09:10 AM

Python變數命名規則的常見誤解及解決方法在Python程式設計中,正確的變數命名是非常重要的。一個好的命名習慣可以讓程式碼更易讀、易於維護,並且可以避免一些潛在的錯誤。然而,新手常常會犯一些常見的變數命名誤區。本文將介紹一些常見的誤區,並給出解決方法和具體的程式碼範例。迷思一:使用保留關鍵字作為變數名稱Python有一些保留關鍵字,這些關鍵字是Python語法中的

Java錯誤:JavaFX節點錯誤,如何處理與避免 Java錯誤:JavaFX節點錯誤,如何處理與避免 Jun 24, 2023 pm 05:37 PM

JavaFX是Java平台的圖形介面工具包,它提供了豐富的API來創建視窗、控制項和場景等等。但在使用JavaFX時,你可能會遇到一些節點錯誤,這可能會導致應用程式無法正常運作。本篇文章將介紹一些常見的JavaFX節點錯誤以及如何處理和避免它們。 NullPointerExceptionNullPointerException是JavaFX應用程式中最常見的錯誤

Golang開發注意事項:如何避免記憶體外洩問題 Golang開發注意事項:如何避免記憶體外洩問題 Nov 23, 2023 am 09:38 AM

Golang是一種快速、高效的開發語言,以其強大的並發能力和內建的垃圾回收機製而受到廣泛的歡迎。然而,即使在使用Golang進行開發時,仍然有可能遇到記憶體外洩的問題。本文將介紹一些常見的Golang開發注意事項,以幫助開發者避免記憶體外洩問題。避免循環引用循環引用是Golang中常見的記憶體外洩問題之一。當兩個物件相互引用時,如果沒有適時地釋放這些物件的引用,就

如何避免在PHP5.6升級至PHP7.4過程中出現的相容性陷阱? 如何避免在PHP5.6升級至PHP7.4過程中出現的相容性陷阱? Sep 05, 2023 am 08:25 AM

如何避免在PHP5.6升級至PHP7.4過程中出現的相容性陷阱?隨著技術的不斷進步,PHP作為一種常用的程式語言,在不同的版本之間往往存在一些相容性問題。當我們決定從較舊的版本升級到較新的版本時,很容易遇到一些意想不到的問題,特別是在PHP5.6升級至PHP7.4的過程中。為了幫助大家避免相容性陷阱,本文將介紹一些常見的陷阱及其解決方法。文法錯誤PH

See all articles