Angular2進階之如何避免Dom迷思
這篇文章主要介紹了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操作的機制?
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>
import { Component, OnInit,Renderer2, ViewChild,ElementRef,AfterViewInit} from '@angular/core'; @Component({ selector: 'app-product', templateUrl: './product.component.html', styleUrls: ['./product.component.css'] }) export class ProductComponent implements OnInit,AfterViewInit { @ViewChild('dia') dia:ElementRef ;定义子试图 ngOnInit() { /**1. *创建一个文本 */ this.dia.nativeElement.innerHTML="这只是一个测试的文档"; /**2. *添加click事件 */ let ul=this.element.nativeElement.querySelector('ul'); this.render2.listen(ul,"click",()=>{ this.render2.setStyle(ul,"background","blue"); ngAfterViewInit(){ /**3. *修改背景颜色 */ let li=this.element.nativeElement.querySelector('ul'); this.render2.setStyle(li,"background","red"); } }
#總結
##############################################################################################################
以上是Angular2進階之如何避免Dom迷思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

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

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

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

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

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