2016-08-24 16 views
0

したがって、角度2の非常に新しい、これまでのところ良い。 私が持っている問題(角度1に使用するのでそうかもしれません)は、クラスユーザーがグローバルで、別のコンポーネント間で使用する必要があるということです。コンポーネント間の角度2の同じクラスのインスタンス

私の場合、私はUserクラスを取得しており、ユーザーは1つのコンポーネントでログインしています。ルータで

@Component({ 
    selector: 'login', 
    templateUrl: 'app/login/login.html', 
    providers: [User] 
}) 
export class loginComponent { 
    submitted = false; 
    username : string; 
    password : string; 
    constructor(public user : User){} 
    onSubmit(event) { //form event 
    event.preventDefault(); 
    this.user.login(this.username,this.password,() =>{this.router.navigateByUrl('dashboard')} 

したがって、ユーザーのメソッドログインが名前のように、ユーザの内部変数を、設定され、最後の名前など 私はルートダッシュボードにasigned diferent成分を有します。 私はUserをインポートすると、私はクラスの新しいインスタンスを得ました。どのように私はクラスのデータをmantainできますか?

+0

コンポーネントのプロバイダでユーザーを宣言しないでください。それをルートNgModuleのプロバイダで宣言します。 –

+0

...私はngModuleを持っていますが、mainComponentをブートストラップしています...ドキュメンテーションのように...そのコンポーネントにプロバイダを注入して作業しました。角度1の古いスコープのようですね。 –

+0

あなたが今見ている古い文書。 https://angular.io/docs/ts/latest/guide/ngmodule.htmlを読んでください。しかし、ルートコンポーネントのプロバイダで宣言しても同じ効果が得られます。 –

答えて

2

まずは、「UserService」を使用することをお勧めします。User

あなたはApplication-wide dependenciesを探しています。それはより高いレベル、好ましくはAppComponentまたはAppModuleで提供する必要があります。

providers配列にサービスを追加すると、アプリケーションの要点として、そのコンポーネントと子コンポーネントで新しいインスタンスが使用されます。

AppComponentにプロバイダを定義し、loginComponentには定義していないので、サービスの新しいインスタンスが取得されているため、同じインスタンスをそこに注入できます。

これが役立ちますように!

+0

うん、これは、行為のなかで! –

+0

それはうまくいって、乾杯! –

関連する問題