这篇文章主要介绍Angular中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('box');
console.log(oBox.innerHTML);
oBox.style.color="red";
//获取不到dom节点
/*
let oBox1:any=document.getElementById('box1');
console.log(oBox1.innerHTML);
oBox1.style.color="blue";
*/
}
//视图加载完成以后触发的方法 dom加载完成 (建议把dom操作放在这个里面)
ngAfterViewInit(){
let oBox1:any=document.getElementById('box1');
console.log(oBox1.innerHTML);
oBox1.style.color="blue";
}
showAside(){
//原生js获取dom节点
var asideDom:any=document.getElementById('aside');
asideDom.style.transform="translate(0,0)";
}
hideAside(){
//原生js获取dom节点
var asideDom:any=document.getElementById('aside');
asideDom.style.transform="translate(100%,0)";
}
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)='getChildProp()'>获取子组件header的属性</button>
<button type="button" (click)='getChildMethod()'>获取子组件header的方法</button>
import { Component, OnInit, ViewChild } from '@angular/core';
@Component({
selector: 'app-news',
templateUrl: './news.component.html',
styleUrls: ['./news.component.less']
})
export class NewsComponent implements OnInit {
//获取Dom
@ViewChild('myBox')
public myBoxIn: any;
@ViewChild('header')
public header: any;
constructor() { }
ngOnInit(): void {
// console.log(this.myBoxIn)
}
//处理dom节点
ngAfterViewInit() {
console.log(this.myBoxIn.nativeElement)
//父组件获取到了整个子组件header
console.log('父组件获取到了整个子组件header')
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 '@angular/core';
// @ViewChild('header')
// public header:any;
// 3. 已经可以在父组件调用子组件的属性和方法了
// 父组件传值给子组件 @input -- 子组件 得到 父组件的 数据 和 方法
// 父组件: home
// 子组件: header
以上是“Angular中DOM操作的示例”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。