2016-12-11 6 views
0

を作成し、これまで必要とされている場合に使用するsingletoneを作成することですが、イムは、このエラーを取得:ブラウザログで角度2 typescriptですがim活字する新しい、角2、何イムやろうとしているsingletone

Unexpected value 'ViewHelperComponent' declared by the module 'AppModule' 

私は間違って何をしていますか?あなたは、@NgModuleで 'をViewHelperComponent' をブートストラップする必要がapp.module.tsファイルで一般的に

import { Component} from '@angular/core'; 
import { ViewHelperComponent } from '../view-helper/view-helper'; 
@Component({ 
    selector: 'app-input-parent', 
    templateUrl: './input-parent.component.html', 
    styleUrls: ['./input-parent.component.css'] 
}) 
export class InputParentComponent implements OnInit { 

temp : ViewHelperComponent; 

constructor() { 
    this.temp = ViewHelperComponent.getInstance() 
} 
} 

答えて

1

シングルトンを手動でプログラムする必要はありません。コンポーネントではなくシングルトンサービスが必要です。モジュールでこのサービスのプロバイダを宣言するだけであれば、Angularがそれを行います。

@Component({ 
    selector: 'app-input-parent', 
    templateUrl: './input-parent.component.html', 
    styleUrls: ['./input-parent.component.css'] 
}) 
export class InputParentComponent implements OnInit { 

constructor(private viewHelper: ViewHelper) { 
    this.viewHelper.check(); 
} 
} 

の場合:

@NgModule({ ... 
    providers: [ViewHelper] 
}) 

は今、あなたは任意のコンポーネントでそれを使用することができます。

class ViewHelper { 

    check(){ 
     console.log("working"); 
    } 
} 

@NgModuleのプロバイダプロパティにそれを宣言します。たとえば、次のようなクラスを作成することができますプロバイダーを@NgModuleに宣言すると、Angularはそれのシングルトンインスタンスを作成します。

0

:このコンポーネントから呼び出す

export class ViewHelperComponent { 

static instance : ViewHelperComponent; 

constructor() {} 

public static getInstance(){ 
    if(ViewHelperComponent.instance == null) 
    ViewHelperComponent.instance = new ViewHelperComponent(); 
    return ViewHelperComponent.instance; 
} 

check(){ 
    console.log("working"); 
} 
} 

とイム:

この

は、クラスであります例:

@NgModule({ bootstrap: [ AppComponent ], 
    declarations: [ 
     AppComponent, 
     ViewHelperComponent]... 

おはようございます!

関連する問題