生命周期:
ngOnChanges()
在 ngOnInit() 之前以及所绑定的一个或多个输入属性的值发生变化时都会调用。
注意,如果你的组件没有输入,或者你使用它时没有提供任何输入,那么框架就不会调用 ngOnChanges()。
ngOnInit()
在第一轮 ngOnChanges() 完成之后调用,只调用一次。
ngDoCheck()
紧跟在每次执行变更检测时的 ngOnChanges() 和 首次执行变更检测时的 ngOnInit() 后调用。
ngAfterContentInit()
当 Angular 把外部内容投影进组件视图或指令所在的视图之后调用。
第一次 ngDoCheck() 之后调用,只调用一次。
ngAfterContentChecked()
ngAfterContentInit() 和每次 ngDoCheck() 之后调用
ngAfterViewInit()
当 Angular 初始化完组件视图及其子视图或包含该指令的视图之后调用。
第一次 ngAfterContentChecked() 之后调用,只调用一次。
ngAfterViewChecked()
每当 Angular 做完组件视图和子视图或包含该指令的视图的变更检测之后调用
ngAfterViewInit() 和每次 ngAfterContentChecked() 之后调用。
ngOnDestroy()
在 Angular 销毁指令或组件之前立即调用。
路由传参:
Routes
是路由信息配置的类,ActivatedRoute
模块是接受传来数据时用的模块,RouterModule
是路由模块,Router
模块是JS路由
跳转用的模块。
// 引入Router 模块
import { Router } from '@angular/router';
// 构造函数中实例化
constructor(private router: Router) {}
// 带传值的JS跳转,注意传值的方式,和动态路由一样。
this.router.navigate(['/detail', item.id]);
// router.navigate(['team', 33, 'user', 11], {relativeTo: route, skipLocationChange: true});
// router.navigateByUrl("/team/33/user/11", { skipLocationChange: true });
// 没有传值的跳转
this.router.navigateByUrl('/url/pdss');// this.router.navigate(['dashboard']);
}
}
取值:
this.route.params.subscribe( val:any => {
})
this.route.queryParams.subscribe( val:any => {
})
父子组件
传值:
//子->父组件
html
<app-leftpage #leftID></app-leftpage>
ts
@ViewChild("leftID", { static: false }) left: LeftpageComponent;
//父组件可以用子组件的所有参数和函数
//父->子组件
父组件调用html
<app-footer [msg]="msg" ></app-footer>
// 子组件下面 ts
import { Component, OnInit,Input } from '@angular/core';
@Input() msg:string; /**子组件通过Input接收父组件传进的msg */
1.以根路由跳转/login
this.router.navigate(['login']);
2.设置relativeTo相对当前路由跳转,route是ActivatedRoute的实例,使用需要导入ActivatedRoute
this.router.navigate(['login', 1],{relativeTo: route});
3.路由中传参数 /login?name=1
this.router.navigate(['login', 1],{ queryParams: { name: 1 } });
4.preserveQueryParams默认值为false,设为true,保留之前路由中的查询参数/login?name=1 to /home?name=1
this.router.navigate(['home'], { preserveQueryParams: true });
5.路由中锚点跳转 /home#top
this.router.navigate(['home'],{ fragment: 'top' });
6.preserveFragment默认为false,设为true,保留之前路由中的锚点/home#top to /role#top
this.router.navigate(['/role'], { preserveFragment: true });
7.skipLocationChange默认为false,设为true,路由跳转时浏览器中的url会保持不变,但是传入的参数依然有效
this.router.navigate(['/home'], { skipLocationChange: true });
8.replaceUrl默认为true,设为false,路由不会进行跳转
this.router.navigate(['/home'], { replaceUrl: true });
网友评论