ホームページ ウェブフロントエンド jsチュートリアル 高度なAngular2でDomの誤解を避ける方法

高度なAngular2でDomの誤解を避ける方法

Apr 03, 2018 am 09:33 AM
誤解 避ける

この記事は、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 &#39;@angular/core&#39;;
@Component({
 selector: &#39;app-product&#39;,
 templateUrl: &#39;./product.component.html&#39;,
 styleUrls: [&#39;./product.component.css&#39;]
})

export class ProductComponent implements OnInit,AfterViewInit {
 @ViewChild(&#39;dia&#39;) dia:ElementRef ;定义子试图
 ngOnInit() {
 /**1.
 *创建一个文本
 */
  this.dia.nativeElement.innerHTML="这只是一个测试的文档";

 /**2.
  *添加click事件
  */
 let ul=this.element.nativeElement.querySelector(&#39;ul&#39;);
  this.render2.listen(ul,"click",()=>{
   this.render2.setStyle(ul,"background","blue");

ngAfterViewInit(){
/**3.
 *修改背景颜色
 */
 let li=this.element.nativeElement.querySelector(&#39;ul&#39;);
 this.render2.setStyle(li,"background","red");
 }
}
ログイン後にコピー


実際、言語を学ぶときは、まずその仕様に従い、前の言語との違いを受け入れ、それから前の言語と何が違うのか、なぜそうするのかを深く理解しなければ理解できません。この言語は素晴らしいです。お役に立てば幸いです。




以上が高度なAngular2でDomの誤解を避ける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Java エラー: エンコードおよびデコードのエラー、解決方法と回避方法 Java エラー: エンコードおよびデコードのエラー、解決方法と回避方法 Jun 24, 2023 pm 05:27 PM

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

Java エラー: JavaFX View エラー、処理方法と回避方法 Java エラー: JavaFX View エラー、処理方法と回避方法 Jun 25, 2023 am 08:47 AM

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

Java エラー: JDBC エラー、解決方法と回避方法 Java エラー: JDBC エラー、解決方法と回避方法 Jun 24, 2023 pm 02:40 PM

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

PHP言語開発で無限ループに陥るのを避ける方法 PHP言語開発で無限ループに陥るのを避ける方法 Jun 10, 2023 pm 02:36 PM

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

Python 変数の命名規則に関するよくある誤解と解決策 Python 変数の命名規則に関するよくある誤解と解決策 Jan 20, 2024 am 09:10 AM

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

Java エラー: JavaFX ノード エラー、処理方法と回避方法 Java エラー: JavaFX ノード エラー、処理方法と回避方法 Jun 24, 2023 pm 05:37 PM

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

Golang 開発メモ: メモリ リークの問題を回避する方法 Golang 開発メモ: メモリ リークの問題を回避する方法 Nov 23, 2023 am 09:38 AM

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

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

See all articles