高度なAngular2でDomの誤解を避ける方法
この記事は、Angular2 の上級者向けの Dom の誤解を避ける方法を主に紹介しています。編集者が非常に優れていると考えたので、参考として共有します。エディターをフォローして一緒に見てみましょう
前書き
Angular2 の設計目標は、ブラウザと DOM を独立させることです。 DOM は複雑なので、DOM からコンポーネントを分離すると、アプリケーションのテストとリファクタリングが容易になります。クロスプラットフォームをサポートするために、Angular は抽象化を通じてさまざまなプラットフォームの違いもカプセル化します。
内容
1. DOM を直接操作できないのはなぜですか?
Angular2 は AOT 静的コンパイル モードを採用しています。この形式では、テンプレート タイプは安定していて安全である必要があります。JavaScript と jquery 言語を直接使用すると、コンパイルでエラーが事前に検出されないため、angular2 のみが typescript 言語を選択します。 、JavaScript のスーパーセット (この言語はコンパイル中にエラーを検出できます)。
2. DOM を操作する 3 つの間違った方法:
@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 '@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 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Java は非常に人気のあるプログラミング言語であり、多くのプロジェクトが Java で作成されています。しかし、開発プロセス中に「エンコードおよびデコードエラー」に遭遇すると、混乱して混乱するかもしれません。この記事では、Java のエンコードおよびデコード エラーの原因と、これらのエラーの解決方法と回避方法を紹介します。コーデックエラーとは何ですか? Java 開発中、多くの場合、テキストやファイルを処理する必要があります。ただし、テキストやファイルが異なると、

JavaFX は Java プラットフォーム用のユーザー インターフェイス フレームワークで、Swing に似ていますが、より最新で柔軟性があります。ただし、使用中に表示エラーが発生する場合がありますので、この記事ではその対処法と回避方法を紹介します。 1. JavaFX ビュー エラーの種類 JavaFX を使用すると、次のビュー エラーが発生することがあります。 NullPointerException これは最も一般的なエラーの 1 つで、通常、初期化されていないオブジェクトまたは存在しないオブジェクトにアクセスしようとしたときに発生します。これはもしかしたら

Java のアプリケーションが広く普及しているため、Java プログラムがデータベースに接続するときに JDBC エラーが発生することがよくあります。 JDBC (JavaDatabaseConnectivity) は、データベースへの接続に使用される Java のプログラミング インターフェイスです。したがって、JDBC エラーは、Java プログラムがデータベースと対話するときに発生するエラーです。ここでは、最も一般的な JDBC エラーのいくつかと、それらを解決および回避する方法を示します。 ClassNotFoundException これは最も一般的な JDBC です

PHP 言語開発では、特定のコードが無制限に実行される無限ループが頻繁に発生し、プログラムがクラッシュしたり、サーバーがクラッシュしたりすることがあります。この記事では、無限ループに陥ることを回避し、開発者がこの問題をより適切に解決できるようにするためのいくつかの方法を紹介します。 1. ループ内での無限再帰呼び出しを避ける ループ内で関数またはメソッドを呼び出すとき、その関数またはメソッドにループ文が含まれていると、無限再帰呼び出しが形成され、プログラムがクラッシュする原因になります。これを回避するには、

Python 変数の命名規則に対するよくある誤解と解決策 Python プログラミングでは、変数に正しい名前を付けることが非常に重要です。適切な命名規則を使用すると、コードが読みやすく保守しやすくなり、潜在的なエラーを回避できます。ただし、初心者は変数の命名に関してよくある誤解を犯すことがよくあります。この記事では、よくある誤解をいくつか紹介し、解決策と具体的なコード例を示します。誤解 1: 予約キーワードを変数名として使用する Python にはいくつかの予約キーワードがあり、これらのキーワードは Python 構文にあります。

JavaFX は Java プラットフォーム用のグラフィカル インターフェイス ツールキットで、ウィンドウ、コントロール、シーンなどを作成するための豊富な API を提供します。ただし、JavaFX の使用中にノード エラーが発生し、アプリケーションが正しく動作しなくなる可能性があります。この記事では、いくつかの一般的な JavaFX ノード エラーと、それらのエラーに対処および回避する方法を紹介します。 NullPointerExceptionNullPointerException は、JavaFX アプリケーションで最も一般的なエラーです

Golang は高速かつ効率的な開発言語であり、強力な同時実行機能と組み込みのガベージ コレクション メカニズムで広く普及しています。ただし、Golang で開発している場合でも、メモリ リークが発生する可能性はあります。この記事では、開発者がメモリ リークの問題を回避できるように、Golang 開発における一般的な考慮事項をいくつか紹介します。循環参照を避ける 循環参照は、Golang でよくあるメモリ リークの問題の 1 つです。 2 つのオブジェクトが相互に参照する場合、これらのオブジェクトへの参照が適時に解放されないと、

PHP5.6 から PHP7.4 にアップグレードする際の互換性の落とし穴を回避するにはどうすればよいですか?テクノロジーの継続的な進歩に伴い、一般的に使用されるプログラミング言語としての PHP には、異なるバージョン間で互換性の問題が発生することがよくあります。古いバージョンから新しいバージョンにアップグレードする場合、特に PHP5.6 から PHP7.4 へのアップグレード中に、予期せぬ問題が発生する可能性があります。互換性の落とし穴を回避できるように、この記事ではいくつかの一般的な落とし穴とその解決策を紹介します。構文エラーPH
