gpt4 book ai didi

javascript - Angular 组件之间的数据共享

转载 作者:行者123 更新时间:2023-11-30 11:07:11 29 4
gpt4 key购买 nike

我是 Angular 6 的新手。我正在使用 Angular 6 创建一个项目。我在共享数据时遇到了问题。这是项目结构:

1) 头部组件2 登录组件3) 主页组件4) 共享服务

我在当前路由的基础上在我的头部组件中添加类。这是在页面刷新上工作。但是当我从一个组件转移到另一个组件时,这不起作用。

代码如下:

布局组件是:

<app-header></app-header>
<router-outlet></router-outlet>
<app-footer></app-footer>
</div>

标题组件:

 ngOnInit() {
console.log(this.dataService.urlExists())
if(this.dataService.urlExists()){
this.url = true
}else{
this.url = false
};

}
<header class="stick-top forsticky" id="header" [ngClass]="{'gradient': url==true}">
</header>

共享服务:

urlExists(){
this.url = this.router.url
if(this.url == "/"){
return false;
}else{
return true;
}
}

请注意:在页面刷新时这是有效的..

最佳答案

这是因为,您的 header 组件在导航时不会重新初始化,因为它位于 router-outlet 之外。您需要监听路由变化并相应地执行所需的操作。

所以在Header组件中,可以订阅路由事件,监听NavigationEnd事件来检查URL:

import {NavigationEnd, Router} from '@angular/router';
import {filter} from 'rxjs/operators';
...



constructor(private router: Router) {
this.subscribeRouterEvents();

}

subscribeRouterEvents = () => {
this.router.events.pipe(
filter(e => e instanceof NavigationEnd)
).subscribe(() => {
console.log(this.dataService.urlExists())
if(this.dataService.urlExists()){
this.url = true
}else{
this.url = false
};
});

关于javascript - Angular 组件之间的数据共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55142767/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com