Angular 2 Setter 和 Getter

Angular 2 Setter and Getter

我正在尝试创建一个服务来将数据解析到不同路由上的不同组件。

如果我在同一组件上调用后续服务,我会得到我需要的结果,但如果我尝试从另一个组件获取设置结果,则服务 returns 未定义。

这是我的服务:-

import {Injectable} from '@angular/core';

@Injectable()
export class TestService {

  public _test:any;

  set test(value:any) {
    this._test = value
  }

  get test():any {
    return this._test;
  }
}

我将服务设置为:-

this.testService.test = 3;

我使用以下方式在我的组件中接收服务数据:-

console.log(this.testService.test)

如前所述,如果我在同一个组件内通信,这绝对没问题,我有相同的导入、提供程序和构造函数。

另外请注意,组件是同级组件

如果有人能帮助我或指出正确的方向,我们将不胜感激。

如果您需要任何额外的代码,请告诉我。

如果要在非父组件的子组件之间共享服务,则需要在模块中而不是在组件中注册服务。当您在组件中注册服务时,它仅可用于该组件及其子组件。

像这样:

@NgModule({
  declarations: [
    AppComponent,
    ProductListComponent,
    StarComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule
  ],
  providers: [ TestService ],
  bootstrap: [AppComponent]
})
export class AppModule { }

尝试在 Component.ts 的构造函数中像这段代码一样初始化 testService var 如果未定义的 var 是 "testService".

constructor (private testService : TestService ){
      //at this time testService its already initialized.
     console.log(this.testService.test);
}

如果您尝试在来自不同模块的两个组件之间进行交互,则必须将您的服务导入到应用程序模块(即主模块)中,这样 get 方法就不会 return