加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

角色 – 组件之间的共享服务不起作用

发布时间:2020-12-17 17:54:53 所属栏目:安全 来源:网络整理
导读:我有一个服务,我声明我的变量. 在我的组件中,我使用此变量将数据放入其中. 服务: @Injectable()export class DataService { public msgs = []; constructor() { } } 现在我在我的组件中使用这个变量: export class MessagesComponent implements OnInit {
我有一个服务,我声明我的变量.
在我的组件中,我使用此变量将数据放入其中.

服务:

@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]
})

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读