ホームページ >ウェブフロントエンド >jsチュートリアル >angular2でノードを取得する方法
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('上方','右侧','下方','左侧'); if(e.type == 'mouseenter' && direction == 1){ $(this).find('.profil-photo').html(dirName[direction]+'离开'); }else{ $(this).find('.profil-photo').html(dirName[direction]+'离开'); } }); }
関連する推奨事項:
node の兄弟、親、子要素を取得する JS メソッド_javascript スキル
jQuery ノードと子ノードのテキストを取得するメソッド_jquery
以上がangular2でノードを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。