【问题标题】:Global variable in angular2 whose value can be changedangular2中的全局变量,其值可以更改
【发布时间】:2016-05-06 11:32:52
【问题描述】:

我在引导时注入了一项服务以使用全局变量:

 bootstrap(AppComponent, [ GloablService ]);

global.service.ts

import {Http} from 'angular2/http';
import {Observable} from 'rxjs/Observable';
import {Observer} from 'rxjs/Observer';
import 'rxjs/add/operator/share';

export class GlobalService {
  baseUrl:string;
  constructor() {
    this.baseUrl='http://localhost:8080'; 
  }
  setBaseUrl(url:string) {
    this.baseUrl=url;  
  }
  getBaseUrl() {
    return this.baseUrl;  
  }
}

现在我已经启动了这个服务以及我的根组件,并且我能够成功地访问该变量。

但每当我更改嵌套组件中的变量值时,更改不会全局反映。

我也尝试使用 observables 但没有用。

有什么建议吗?

【问题讨论】:

    标签: javascript angular observable


    【解决方案1】:

    不要在任何组件上添加providers: [ GloablService ],否则组件会得到不同的实例。像你一样只在bootstrap() 提供一次,或者只在根组件AppComponent 提供一次。

    【讨论】:

    • 我没有在任何嵌套组件中添加提供者。我只面临可观察的问题。似乎代码可能已被弃用。 :(
    • 不应该在类上面加上@Injectable()吗?
    • 您的问题并未显示您如何使用 observables。这可能是由在其他组件订阅之前发出值的可观察对象引起的。
    • @echonax @Injectable() 应该添加到根据样式指南注入的所有类中,但只有在构造函数有参数时才需要。
    • @GünterZöchbauer 全局变量的值在我尝试更改时没有更改..为什么会这样?
    猜你喜欢
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多