2016-03-23 7 views
0

は、私はこのようにやっている:Angular2は、注入あらわす定数

import {testInjection} from './ts/models'; 
import {bootstrap} from 'angular2/platform/browser'; 

bootstrap(AppComponent, [testInjection]).catch(err => console.error(err)); 

models.ts

let TEST:string = "test"; 

export var testInjection: Array<any>=[ 
    bind(TEST).toValue(TEST) 
]; 

で、その後AppComponentで:

class export AppComponent{ 
constructor(
public http: Http, 
    @Inject(TEST) TEST:string 
    ){ 

    } 
} 

が、このエラーを取得:エラーTS2304 :名前 'TEST'を見つけることができません。 誰かがちょうど私が間違っていることを指摘することができますか?

あなたは間違った方法で行っているTNX

答えて

0

に、あなただけの@Injecatableを使用する必要があるサービスAngular2で

import { Injectable } from '@angular/core'; 

import { testInjection } from './models'; 

@Injectable() 
export class TestService { 
    getTestValue() { 
    return testInjection; 
    } 
} 

そして、あなたのAppComponentで

import {TestService} from './test.service' 
class export AppComponent{ 
constructor(
public http: Http, _testService : TestService){ 
    console.log(_testService.getTestValue()); 
    } 
} 

を作り、それがなければなりませんサービスで使用される。そして、コンポーネントではDIにする必要があります:)。 は

良い方法に、それはあなたがあなたが質問に使用されるように、あなたが@Inject使用する必要はありません使用している場合は、単に型チェックのために、あなたのコードのためのモーダルを使用しようとしているあなたに

0

を役に立てば幸いタイプをチェックしたり、メソッドを呼び出したり、何でもしたい場合は、少なくとも1つのデコレータを提供する必要があるサービスを作成する場合は、@Component、または@Injectableを使用することができます。

import { Injectable } from './@angular/core'; 

@Injectable() 
export class TestService { 
    name:string =null; 
    email:string =null; 
.../// 
    constructor(){ 
    //do your stuff 
    } 
} 

か、また、このようにこれを使用することができます - -

import { Component } from './@angular/core'; 

    @Component({ 
     selector: 'testService' 
    }) 
    export class TestService { 
     name:string =null; 
     email:string =null; 
    .../// 
     constructor(){ 
     //do your stuff 
     } 
    } 

PS: - It is necessary to decorate class with at least one decorator

そうすることによって、このクラスは、複数のコンポーネントで使用されている場合、あなたが成功した今、1つのクラスを作成している。このようなあなたはこのようなブートストラップの時にこれを注入することができる -

bootstrap(AppComponent, [TestService]).catch(err => console.error(err)); 

今、あなたは、ブートストラップしながら、あなたのサービスを注入した場合、

しかし、あなたがあなたのサービスをインポートする必要があるよりもブートストラップ中にあなたのサービスを注入していないなら、あなたはサービスをインポートする必要がありますあなたはこのようにそれを使用することができますよりも、プロバイダのリストに注入する: -

import { Component } from './@angular/core'; 
import { TestService } from './TestService';  

    @Component({ 
     selector: 'testService', 
     providers: [TestService] 
    }) 
    export class AppComponent { 
     constructor(private service : TestService){ 
     this.service.blabla //now you are able to use your service here 
     } 
    } 

・ホープはこの1つはAngular2内注入に関するいくつかのポイントをクリアします。

関連する問題