簡體   English   中英

Angular 2 Setter和Getter

[英]Angular 2 Setter and Getter

我正在嘗試創建一個服務來將數據解析到不同路由上的不同組件。

如果我在同一個組件上調用follow服務,我會得到我需要的結果,但如果我嘗試從另一個組件獲取設置結果,則服務返回undefined。

這是我的服務: -

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 { }

如果您嘗試在來自不同模塊的兩個組件之間進行交互,那么您必須將服務導入到app模塊(即主模塊)中,這樣get方法就不會返回

嘗試在Component.ts中的構造函數內部初始化testService var,如果未定義的var是“testService”,則可以工作。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM