美文网首页
angular生命周期,传参

angular生命周期,传参

作者: 肥羊猪 | 来源:发表于2020-07-23 15:50 被阅读0次

    生命周期:
    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 });
    

    相关文章

      网友评论

          本文标题:angular生命周期,传参

          本文链接:https://www.haomeiwen.com/subject/zudhlktx.html