2017-03-04 6 views
2

私が行ったことの概要は です。1)文字列値を格納する簡単なサービスを作成しました。 2)はappModuleで提供されています。 3)2つのコンポーネントが作成されました。私はコンポーネントでサービスを提供するのではなく、コンストラクタを通してサービスを注入します。 4)1番目と2番目の間をナビゲートするための2つのルートが追加されました。最初のコンポーネントはサービスに文字列を保存し、2番目のコンポーネントはサービスから格納された文字列を取り戻す必要があります。これは機能しません。 私は2日間のチュートリアルを終えて解決策を探しています - うまくいくようです!スタックオーバーフローのここで解決された答えのどれも私のための明確な解決策を提供していないようです。他のすべてが働いています。インポートはOKです。ブラウザではコンパイルやランタイムエラーは発生しません。アングル2シングルトンサービスが私のために働いていない

助けてください。ここで

は明らか輸入せずにコードスニペットです:

// app.module.ts 
... 
const appRoutes: Routes = [ 
    {path: '', redirectTo: '/first', pathMatch: 'full'}, 
    {path: 'first', component: FirstComponent}, 
    {path: 'second', component: SecondComponent}, 
]; 


@NgModule({ 
    declarations: [ 
    AppComponent, 
    FirstComponent, 
    SecondComponent 
    ], 
    imports: [ 
    BrowserModule, 
    FormsModule, 
    HttpModule, 
    RouterModule.forRoot(appRoutes) 
    ], 
    providers: [DataService], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 


// first component 
... 

import {DataService} from '../services/data.service'; 

@Component({ 
    selector: 'app-first', 
    templateUrl: './first.component.html', 
    styleUrls: ['./first.component.css'] 
}) 
export class FirstComponent implements OnInit { 
    localToken: string; 

    constructor(private svc: DataService) { } 

    ngOnInit() { 
    this.svc.save("000000"); 
    } 

} 


// second component 
... 
import {DataService} from '../services/data.service'; 

@Component({ 
    selector: 'app-second', 
    templateUrl: './second.component.html', 
    styleUrls: ['./second.component.css'] 
}) 
export class SecondComponent implements OnInit { 
    localToken: string; 

    constructor(private svc: DataService) { } 

    ngOnInit() { 
    // THIS DOES NOT WORK !!! 
    this.localToken = this.svc.retrieve(); 

    } 

} 

Q:私が間違っているのか?

+0

どのように1つの相手から別の相手にナビゲートしていますか?あなたはURLを変更していますか?あなたは毎回ブラウザーを更新していて、それがうまくいかないことを意味します。あなたがリフレッシュするとき、あなたはオールアールの一時記憶を耳にするでしょうから。 – Smit

+0

plnkrのリンクをご提供できますか? – Gelidus

+0

あなたのサービスは注射可能でなければなりません。 – Monicka

答えて

0

としては、サービスが注射'角度/コア@' から

インポート{注射}としてマークされなければならないhere説明します。シモーナからの助けを借りて

@Injectable()エクスポートクラスHeroService {}

2

は、私は最終的にシングルトンサービス作業罰金を得ました! appModule

    • サービス
    • インポートを作成し、それは(S)成分中のプロバイダアレイ

    に追加

    • から} {サービスをインポート'{パス}';
    • ... サービスの種類のプライベートPARMがthis.parmとしてクラスメンバメソッドで
    • 使用を輸入して、コンストラクタに注入/

    作品を追加!シモーナ

    ありがとう
  • +0

    私は助けてくれると嬉しいです – Monicka

    関連する問題