angular2でノードを取得する方法

小云云
小云云オリジナル
2017-12-18 13:23:162622ブラウズ

angular2 では、ts ファイルは js コードをサポートしています。 document.getElementById を使用して要素ノードを取得できないのはなぜですか?実際、angular2 では ts ファイルが最初にロードされ、次にビューがロードされるため、ノードを取得できません。この記事では、angular2 でのノードの取得方法を中心に、いくつかの方法を詳しく紹介しますので、興味のある方は参考にしていただければ幸いです。

アプリケーション層で DOM を直接操作すると、アプリケーション層とレンダリング層の間に強い結合が生じ、Web ワーカー環境では DOM が機能しないため、アプリケーションを Web ワーカーなどの別の環境で実行できなくなります。直接操作されることになる。

ElementRef を通じて、さまざまなプラットフォームのビュー レイヤーにネイティブ要素をカプセル化できます (ブラウザ環境では、ネイティブ要素は通常 DOM 要素を参照します)。最後に、Angular が提供する強力な依存関係注入機能を利用して、これを簡単に行うことができます。ネイティブ要素にアクセスします。

angular2 には、ビューがロードされた後に対応する ts を実行するのに役立つライフサイクル フック AfterViewInit があります

ts:


import { Component, ElementRef ,AfterViewInit} from '@angular/core';

exportclassAppComponent { 

constructor(privateelementRef: ElementRef) {

 }

ngAfterViewInit() {

  let pEle =this.elementRef.nativeElement.querySelector('p');//获取第一个p

  console.dir(pEle);

  let p = doxcument.getElementById("p");  //获取id为‘p'的节点

}

}

以下は、angular の組み込み属性デコレーター @ViewChild を使用した最適化ソリューションです。

ts:


import{ Component, ElementRef, ViewChild, AfterViewInit }from'@angular/core';

exportclassAppComponent{

@ViewChild('greet')

 greetp: ElementRef;

ngAfterViewInit() {this.greetp.nativeElement.style.backgroundColor ='red'; }

}

html:


<p #greet>hello world</p>  //element的标识"#name",@ViewChild根据这个搜索元素

Angular で dom 要素を取得する方法

ステップの内訳:

ステップ 1: 取得する要素に ng-model 変数を与えてバインドする行事!

コードをコピーします コードは次のとおりです:


9c2d3fab4726bb17371ddb5438816084

ステップ 2: コントローラーで $event.target を使用して dom 要素を取得します。


$scope.switchImage = function($event, value) { 
      3       $($event.target).on("mouseenter mouseleave",function(e) {
         var w = $(this).width(); // 得到盒子宽度
         var h = $(this).height();// 得到盒子高度
         var x = (e.pageX - this.offsetLeft - (w / 2)) * (w > h ? (h / w) : 1);
         // 获取x值
         var y = (e.pageY - this.offsetTop - (h / 2)) * (h > w ? (w / h) : 1);
         // 获取y值
         var direction = Math.round((((Math.atan2(y, x) * (180 / Math.PI)) + 180) / 90) + 3) % 4; 
            //direction的值为“0,1,2,3”分别对应着“上,右,下,左”
         // 将点的坐标对应的弧度值换算成角度度数值
         var dirName = new Array(&#39;上方&#39;,&#39;右侧&#39;,&#39;下方&#39;,&#39;左侧&#39;);
         if(e.type == &#39;mouseenter&#39; && direction == 1){
           $(this).find(&#39;.profil-photo&#39;).html(dirName[direction]+&#39;离开&#39;);

            }else{ 
              $(this).find(&#39;.profil-photo&#39;).html(dirName[direction]+&#39;离开&#39;); 
          } 
        }); 
      }

関連する推奨事項:

node の兄弟、親、子要素を取得する JS メソッド_javascript スキル

jQuery ノードと子ノードのテキストを取得するメソッド_jquery

jquery getノード名_jquery

以上がangular2でノードを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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