Rumah > hujung hadapan web > tutorial js > Angular2中如何使用Dom

Angular2中如何使用Dom

php中世界最好的语言
Lepaskan: 2018-05-02 14:21:35
asal
1764 orang telah melayarinya

这次给大家带来Angular2中如何使用Dom,Angular2中使用Dom的注意事项有哪些,下面就是实战案例,一起来看一下。

前言

Angular2的设计目标本来就是要让浏览器和DOM独立。DOM是复杂的,因此使组件与它分离,会让我们的应用程序,更容易测试和重构。为了支持跨平台,Angular还通过抽象封装了不同平台的差异。

内容

1.为什么不能直接操作DOM?

Angular2采用AOT静态编译模式,这种形式下需要我们的模板类型必须是稳定和安全的,直接使用javascript和jquery语言是不稳定,因为他们的编译不会提前发现错误,所以angular2才会选择javascript的超集typescript语言(这种语言编译期间就能发现错误)。 

2.三种错误操作DOM的方式:

1

2

3

4

5

6

7

8

9

@Component({ ... })

export class HeroComponent {

 constructor(private _elementRef: ElementRef) {}

 doBadThings() {

  $('id').click(); //jquery

  this._elementRef.nativeElement.xyz = ''//原生的ElementRef

  document.getElementById('id'); //javascript

 }

}

Salin selepas log masuk

3.Angular2如何DOM操作的机制?

为了能够支持跨平台,Angular 通过抽象层封装了不同平台的差异。比如定义了抽象类 Renderer、Renderer2 、抽象类 RootRenderer 等。此外还定义了以下引用类型:ElementRef、TemplateRef、ViewRef 、ComponentRef 和 ViewContainerRef 等。 

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

product.component.html

1

2

3

4

5

6

7

8

<p>商品信息</p>

<ul>

 <li *ngFor="let product of dataSource| async as list">

  {{product.title}}

 </li>

</ul>

<p #dia>

</p>

Salin selepas log masuk

product.component.ts

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

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

 }

}

Salin selepas log masuk

总结

学习一种语言其实我们首先应该去遵循他的规范,接受他和之前语言的不同之处,然后再去深入理解和之前的方式不一样在哪里,为什么这么做,否则我们无法理解这种语言的妙处,希望对你有帮助!

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

React中使用Vuex方法详解

nodejs多版本管理使用详解

Atas ialah kandungan terperinci Angular2中如何使用Dom. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan