我有一个服务,我声明我的变量.
在我的组件中,我使用此变量将数据放入其中.
在我的组件中,我使用此变量将数据放入其中.
服务:
@Injectable() export class DataService { public msgs = []; constructor() { } }
现在我在我的组件中使用这个变量:
export class MessagesComponent implements OnInit { constructor(private dataService: DataService){} ngOnInit() { this.getData(); } getData(){ let msgs = []; if (diffr <= this.geomessage[i].range) { this.geomessage[i].dist = diffr; msgs.push(this.geomessage[i]); //console.log("this message: ",this.geomessage[i]); //DEBUG } this.dataService.msgs = msgs; } }
我只发布了必要的代码.这个.dataService.msgs het充满了消息,这很好用.当我到达另一个组件时,this.dataService.msgs的数据仍然存在,但当我返回到Messages组件时,this.dataService.msgs是未定义的,直到我再次填充它,但我需要其中的数据.有人知道怎么做吗?
谢谢
解决方法
如果要在@Component注释的providers数组中提供DataService,
@Component({ ... providers: [DataService],})...
这个服务将是这个组件的单例(它将为这个组件创建一个新实例)(如果他们没有在他们的注释下提供这个服务,那么它就是子项).
如果要在多个组件之间使用此服务并共享相同的服务实例;您需要在组件/模块中提供此服务,该组件/模块是DI树中这些组件的父级.如果这是一个全局服务,我建议只在AppModule(或共享模块)中提供它.
@NgModule({ providers:[DataService] })