Angular での DOM 操作に関する簡単な説明

青灯夜游
リリース: 2021-03-10 09:50:24
転載
1864 人が閲覧しました

この記事では、Angular での DOM 操作について紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

Angular での DOM 操作に関する簡単な説明

関連する推奨事項: 「angular チュートリアル

1. Angular および @ViewChild での Dom 操作、Angular 実行 css3アニメーション

1.1 ネイティブ js dom 操作とアニメーション

デモ コンポーネント: app\components\transition
HTML

<div class="content">

    <p>内容区域</p>

    <div id="box">
          this is box
    </div>
    <br>
    <div id="box1" *ngIf="flag">
      this is box1  
    </div>

    <button (click)="showAside()">弹出侧边栏</button>
    <button (click)="hideAside()">隐藏侧边栏</button>
  </div>
  
  <aside id="aside">
    这是一个侧边栏
  </aside>
ログイン後にコピー

コンポーネント ts :

public flag:boolean=true;
  constructor() { }

  ngOnInit(): void {
      //组件和指令初始化完成   并不是真正的dom加载完成
      let oBox:any=document.getElementById(&#39;box&#39;);
      console.log(oBox.innerHTML);
      oBox.style.color="red";
      //获取不到dom节点
     /*
      let oBox1:any=document.getElementById(&#39;box1&#39;);
      console.log(oBox1.innerHTML);
      oBox1.style.color="blue";
     
     */
  }
     //视图加载完成以后触发的方法    dom加载完成  (建议把dom操作放在这个里面)  
    ngAfterViewInit(){
        let oBox1:any=document.getElementById(&#39;box1&#39;);
        console.log(oBox1.innerHTML);
        oBox1.style.color="blue";
    }

  showAside(){
    //原生js获取dom节点
    var asideDom:any=document.getElementById(&#39;aside&#39;);
    asideDom.style.transform="translate(0,0)";

 }

hideAside(){
   //原生js获取dom节点
   var asideDom:any=document.getElementById(&#39;aside&#39;);
   asideDom.style.transform="translate(100%,0)";

}
ログイン後にコピー

1.2 Angular での DOM 操作 (ViewChild)

ViewChild: プロパティ デコレーター

デモ ファイル:\ngDemo\src\ app\components\ news

1. コンポーネント テンプレート ファイルは

#
<div #myBox>
   我是一个dom节点
</div>
ログイン後にコピー

2 を通じて属性を定義するようになりました。現在、コンポーネント ts は ViewChild を通じて dom

<div #myBox>我是一个dom节点</div>
<app-header #header></app-header>
<button type="button" (click)=&#39;getChildProp()&#39;>获取子组件header的属性</button>
<button type="button" (click)=&#39;getChildMethod()&#39;>获取子组件header的方法</button>
ログイン後にコピー
import { Component, OnInit, ViewChild } from &#39;@angular/core&#39;;

@Component({
  selector: &#39;app-news&#39;,
  templateUrl: &#39;./news.component.html&#39;,
  styleUrls: [&#39;./news.component.less&#39;]
})
export class NewsComponent implements OnInit {
  //获取Dom
  @ViewChild(&#39;myBox&#39;)
  public myBoxIn: any;

  @ViewChild(&#39;header&#39;)
  public header: any;

  constructor() { }

  ngOnInit(): void {
    // console.log(this.myBoxIn)

  }

  //处理dom节点
  ngAfterViewInit() {
    console.log(this.myBoxIn.nativeElement)

    //父组件获取到了整个子组件header
    console.log(&#39;父组件获取到了整个子组件header&#39;)
    console.log(this.header)
  }
  //获取子组件header的属性
  getChildProp() {
    console.log(this.header.title)

  }
  //获取子组件header的方法
  getChildMethod() {
    console.log(this.header.headRun)
    this.header.headRun();
  }

}


// 父组件   news   引入 <app-header #header></app-header>
// 子组件  header

// 父组件 得到 子组件的 数据 和 方法   ---   子组件 传 值给父组件  


// 总结:
// 1. 父组件中调用子组件的时候, 给子组件一个名称
// <app-header #header></app-header>
// 2. 在父组件引入viewChild

// import { Component, OnInit,ViewChild } from &#39;@angular/core&#39;;


// @ViewChild(&#39;header&#39;)
// public header:any;

// 3. 已经可以在父组件调用子组件的属性和方法了


// 父组件传值给子组件  @input   -- 子组件 得到 父组件的 数据 和 方法 

// 父组件: home
// 子组件: header
ログイン後にコピー

を取得しています。プログラミング関連の場合知識については、プログラミング入門をご覧ください。 !

以上がAngular での DOM 操作に関する簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート