0

アプリケーションの存続期間中、いくつかの属性の値を保持するシングルトン オブジェクトを Angular2 で作成する方法を考えています。これにより、それを多くのコンポーネントで使用して注入することができます。

何か案は?

ありがとう

私の試みは次のことでした:

bootstrap(MyApp,[ROUTER_PROVIDERS,
HTTP_PROVIDERS,
provide(LocationStrategy, {useClass: HashLocationStrategy}),
provide(APP_BASE_HREF, {useValue: '/'}),Login])

where 

Login:

@Injectable()
export class Login {
    public  username: string = "any";
    constructor(private _http:Http, private _router:Router){

    }

    public static login(username,password){
        var creds = 'username=' + username+'&password='+password;
        this._http.post('/authentication/login',creds,{headers: contentHeaders})
            .subscribe(
                success =>{
                    this.username = success.json().username;
                    this._router.navigate(['Dashboard']);
            },
                error =>{
                    console.log('Wrong creds')
            });
    }

    public getUsername(){
        return this.username;
    }
}

この場合、getUsername() は機能しますが、this._http 投稿は機能しません。エラーがスローされます。

元の例外: TypeError: 未定義の元のスタック トレースのプロパティ 'post' を読み取ることができません:

4

2 に答える 2

3

シングルトン パターンは、 を通じて実現できますsharedServicebootstrap次のような関数に注入する必要があります

bootstrap(AppComponent,[sharedService]); // 

あなたの更新された質問を読みました。好きなようにオブジェクトを共有するプランカー

于 2016-03-10T12:45:50.470 に答える
1

のプロバイダー リストにサービスを追加します。

bootstrap(AppComponent, [OtherProviders, MySingletonService]);

MySingletonService(に他の場所を追加しないでくださいproviders

Angular2 DI は、同じインスタンスがどこにでも注入されることを保証します。

于 2016-03-10T12:36:39.973 に答える