【发布时间】:2019-02-11 15:10:52
【问题描述】:
您好,我基本上是 Angular 的新手,在这里我试图从服务中访问一个布尔变量。我已经在服务中声明了一个值为 true 的布尔变量。基于一些逻辑,我将把该服务变量更改为 false。我在几个组件中使用的那个特定变量。 所以我面临的问题是,我分配的初始值是真实的,它会出现在我使用过的所有组件中,但是在更改了未反映在所有组件中的值之后。 像这样的服务类:
@Injectable()
export class MyService {
running: boolean = true;
}
组件 1:
export class FirstComponent {
constructor(private myService: MyService) { }
check(){
this.myservice.running = false;
}
}
组件 2:
export class SecondComponent implements OnChanges {
running;
constructor(private myService: MyService) { }
ngOnChanges(){
this.running = this.myService.running;
console.log('running', this.running);
}
}
这就是我将如何更改布尔值并从不同组件中的服务访问。我不确定这是否正确,请纠正我。
【问题讨论】:
-
您是否在应用程序的根模块中添加了该服务?如果没有,那么它们就不会在组件之间共享。
-
您是否尝试过在根模块中提供服务?我知道 Angular 会以这种方式创建一个可以在所有组件之间共享的服务的单例实例。我想知道您是否刚刚启动了一项新服务,而他们没有监控相同的状态
-
如果您需要该服务是单例的,那么您应该在 approotmodule 中添加您的服务。那么只有它会充当单例,否则将为每个组件创建不同的实例
-
@anuraagdjain 是的,我已经在根模块中添加了,我可以获得初始布尔值,但是在更改后它没有得到反映..可能会有一些不同的过程进行更改会反映在组件中的访问时间
-
必须有相同的方式来通知数据发生了变化,否则其他组件不会知道。您可以为此使用
Subject。在此处阅读更多信息blog.angularindepth.com/…
标签: angular