Heim > Web-Frontend > js-Tutorial > Hauptteil

So vermeiden Sie Missverständnisse bei der Verwendung von Dom in Angular

php中世界最好的语言
Freigeben: 2018-04-08 14:27:42
Original
1481 Leute haben es durchsucht

Dieses Mal zeige ich Ihnen, wie Sie Missverständnisse bei der Verwendung von Dom in Angular vermeiden können. Was sind die Vorsichtsmaßnahmen bei der Verwendung von Dom in Angular? Hier sind praktische Fälle.

Vorwort

Das Designziel von Angular2 besteht darin, den Browser und das DOM unabhängig zu machen. Das DOM ist komplex, daher erleichtert die Entkopplung von Komponenten das Testen und Refactoring unserer Anwendungen. Um plattformübergreifend zu unterstützen, kapselt Angular auch die Unterschiede verschiedener Plattformen durch Abstraktion.

Inhalt

1. Warum kann das DOM nicht direkt manipuliert werden?

Angular2 verwendet den statischen AOT-Kompilierungsmodus. In dieser Form muss unser Vorlagentyp stabil und sicher sein. Die Verwendung von Javascript und der JQuery-Sprache ist instabil, da sie nicht erkannt werden Fehler im Voraus, daher wählt Angular2 die Typescript-Sprache, eine Obermenge von Javascript (diese Sprache kann Fehler während der Kompilierung erkennen).

Drei falsche Möglichkeiten, DOM zu bedienen:

@Component({ ... })
export class HeroComponent {
 constructor(private _elementRef: ElementRef) {}
 doBadThings() {
  $('id').click(); //jquery
  this._elementRef.nativeElement.xyz = ''; //原生的ElementRef
  document.getElementById('id'); //javascript
 }
}
Nach dem Login kopieren
3. Wie funktioniert der Angular2

DOM-Mechanismus? Um plattformübergreifend zu unterstützen, kapselt Angular die Unterschiede verschiedener Plattformen durch Abstraktionsschichten. Beispielsweise sind abstrakte Klasse

Renderer, Renderer2, abstrakte Klasse RootRenderer usw. definiert. Darüber hinaus sind folgende Referenztypen definiert: ElementRef, TemplateRef, ViewRef, ComponentRef, ViewContainerRef usw.

4. Richtige Art und Weise, DOM (ElementRef und Renderer2) zu bedienen:

product.component.html

product.component.ts

<p>商品信息</p>
<ul>
 <li *ngFor="let product of dataSource| async as list">
  {{product.title}}
 </li>
</ul>
<p #dia>
</p>
Nach dem Login kopieren

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");
 }
}
Nach dem Login kopieren
Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Eine Zusammenfassung der Verwendung der integrierten Anweisungen von Vue


So verwenden Sie die FileReader-API um einen Vue-Dateireader zu erstellen


Wie implementiert React die Aufteilung des Seitencodes und das Laden bei Bedarf?

Das obige ist der detaillierte Inhalt vonSo vermeiden Sie Missverständnisse bei der Verwendung von Dom in Angular. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage