use*_*007 5 variables service components sharedservices angular
我有一个服务,我声明我的变量.在我的组件中,我使用此变量将数据放入其中.
服务:
@Injectable()
export class DataService {
public msgs = [];
constructor() { }
}
Run Code Online (Sandbox Code Playgroud)
现在我在我的组件中使用这个变量:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我只发布了必要的代码.它this.dataService.msgs充满了消息,这很好.当我到另一个组件this.dataService.msgs的数据仍然存在,但是当我回来的TOT Messagescomponent的this.dataService.msgs是undefined,直到我再次填满它,但我需要在它的数据.有人知道怎么做吗?
谢谢
eko*_*eko 10
如果您在DataService内部提供@Component注释的providers数组,
@Component({
...
providers: [DataService],
})...
Run Code Online (Sandbox Code Playgroud)
这个服务将是这个组件的单例(它将为这个组件创建一个新实例)(如果他们没有在他们的注释下提供这个服务的话,那就是它们).
如果要在多个组件之间使用此服务并共享相同的服务实例; 您需要在组件/模块中提供此服务,该组件/模块是DI树中这些组件的父级.如果这是一个全局服务,我建议只在AppModule(或共享模块)中提供它.
@NgModule({
providers:[DataService]
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1445 次 |
| 最近记录: |