加载子路由时如何在父组件上执行代码?

时间:2019-08-19 12:55:47

标签: angular

我尝试实现侧边栏菜单,该菜单栏将根据子路线更改项目。 即:侧边栏菜单的基本内容是警报和手势。例如,当我单击警报时,我重定向到url / alerte,并且我想更改侧边栏菜单的内容。我已经将代码放入ngInit()函数中。但是页面有任何重新加载,因此代码无法执行(如果我是对的)。当我重新加载页面时,边栏内容随我想要的内容而变化。我在问自己这是否是正确的方法?还是应该尝试将数据从孩子传递给父母?

初始化父组件时,我会对url进行一些检查,以将内容传递给父模板中使用的数组。如果我在'/ alvin / home'上,则传递默认项,当它与其他项不同时,我想请求API来获取数据以显示边栏。

我的侧边栏组件

export class SideNavComponent implements OnInit {

 menus : string[]=[];
 href: string = '';

  constructor(private router: Router, public sideNavService: SideNavService, public plateformeService: PlateformeService) { }



  ngOnInit() {
    this.href = this.router.url;
    console.log('essai: '+this.href);
    if (this.href == '/alvin/home'){
          this.menus.push('alerte');
          this.menus.push('gestion');
    }
    if (this.href == '/alvin/alerte'){
      this.plateformeService.getAll().subscribe(menus => {
        for (let m of menus){
                          this.menus.push(m.nom);
        };
      });
    }

  }
}

我想在加载子路线时更改项目。谢谢你的帮助

0 个答案:

没有答案