搜尋
首頁web前端js教程使用Angular2時避免Dom誤區

這次帶給大家使用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操作的機制?

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

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

product.component.html

<p>商品信息</p>
     
  •   {{product.title}}  

product.component.ts

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");
 }
}

總結

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

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

vue內建指令的使用

#React裡的Vuex使用案例

以上是使用Angular2時避免Dom誤區的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Java错误:JavaFX视图错误,如何处理和避免Java错误:JavaFX视图错误,如何处理和避免Jun 25, 2023 am 08:47 AM

JavaFX是Java平台的一个用户界面框架,类似于Swing,但却更加现代化和灵活。然而在使用时可能会遇到一些视图错误,本文将介绍如何处理和避免这些错误。一、JavaFX视图错误的类型在使用JavaFX时,可能会遇到以下几种视图错误:NullPointerException这是最常见的错误之一,通常在尝试访问未初始化或不存在的对象时发生。这可能

Java错误:编解码错误,如何解决和避免Java错误:编解码错误,如何解决和避免Jun 24, 2023 pm 05:27 PM

Java是一门非常流行的编程语言,许多项目都是由Java编写的。然而,当我们在开发过程中遇到“编解码错误”(EncodingandDecodingErrors)时,可能会感到困惑和疑惑。在本文中,我们将介绍Java编解码错误的原因、如何解决和避免这些错误。什么是编解码错误?在Java开发过程中,我们经常需要处理文本和文件。然而,不同的文本和文件可能使

Java错误:JDBC错误,如何解决和避免Java错误:JDBC错误,如何解决和避免Jun 24, 2023 pm 02:40 PM

随着Java的广泛应用,Java程序在连接数据库时经常会出现JDBC错误。JDBC(JavaDatabaseConnectivity)是Java中用于连接数据库的编程接口,因此,JDBC错误是在Java程序与数据库交互时遇到的一种错误。下面将介绍一些最常见的JDBC错误及如何解决和避免它们。ClassNotFoundException这是最常见的JDBC

关于Python变量命名规则的常见误解及解决方案关于Python变量命名规则的常见误解及解决方案Jan 20, 2024 am 09:10 AM

Python变量命名规则的常见误区及解决方法在Python编程中,正确的变量命名是非常重要的。一个良好的命名习惯可以使代码更易读、易维护,并且可以避免一些潜在的错误。然而,新手常常会犯一些常见的变量命名误区。本文将介绍一些常见的误区,并给出解决方法和具体的代码示例。误区一:使用保留关键字作为变量名Python有一些保留关键字,这些关键字是Python语法中的

PHP语言开发中避免陷入无限循环的方法PHP语言开发中避免陷入无限循环的方法Jun 10, 2023 pm 02:36 PM

在PHP语言开发中,经常会遇到无限循环的情况,它会无限制地执行某些代码,导致程序崩溃甚至服务器崩溃。本文将介绍一些避免陷入无限循环的方法,帮助开发人员更好地解决这一问题。1.避免在循环中进行无限递归调用当在循环中调用一个函数或方法时,如果函数或方法中又包含了循环语句,就会形成无限递归调用,导致程序崩溃。为避免这种情况的发生,可以在递归调用函数或方法时,添加一

如何避免在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

Golang开发注意事项:如何避免内存泄露问题Golang开发注意事项:如何避免内存泄露问题Nov 23, 2023 am 09:38 AM

Golang是一种快速、高效的开发语言,以其强大的并发能力和内置的垃圾回收机制而受到广泛的欢迎。然而,即使在使用Golang进行开发时,仍然有可能遇到内存泄露的问题。本文将介绍一些常见的Golang开发注意事项,以帮助开发者避免内存泄露问题。避免循环引用循环引用是Golang中常见的内存泄露问题之一。当两个对象相互引用时,如果没有适时地释放这些对象的引用,就

PHP与MySQL索引的失效情况及如何避免和解决PHP与MySQL索引的失效情况及如何避免和解决Oct 15, 2023 am 11:52 AM

PHP与MySQL索引的失效情况及如何避免和解决引言:在开发Web应用程序时,PHP和MySQL往往是常用的编程语言和数据库。而在处理大量数据时,索引是提高查询性能的重要因素之一。然而,索引的失效情况可能会导致查询变慢,从而影响应用程序的性能。本文旨在介绍PHP与MySQL索引的失效情况,并提供一些实用的解决办法和避免措施。一、什么是索引失效索引失效指的是在

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3 Mac版

SublimeText3 Mac版

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

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!