2016-04-29 56 views

回答

5

我會用@Inject裝飾:

@Injectable() 
export class SomeService { 
    constructor(@Inject('message') message:string) { 
    } 
} 

這樣引導您的應用程序時,請不要忘記配置服務提供商,例如:

bootstrap(AppComponent, [ SomeService, myProvider ]); 
2

由於Dependency Injection doc不再提字符串標記,我建議使用OpaqueToken

應用程序/ CO nfig.ts

import {OpaqueToken, provide} from 'angular2/core'; 

export let MY_MESSAGE = new OpaqueToken('my-msg'); 
export let myProvider = provide(MY_MESSAGE, { useValue: 'Hello' }); 

應用程序/ app.component.ts

import {Component} from 'angular2/core'; 
import {myProvider} from './config'; 
import {MyService} from './MyService'; 

@Component({ 
    selector: 'my-app', 
    providers: [myProvider, MyService], 
    template: `{{msg}}` 
}) 
export class AppComponent { 
    constructor(private _myService:MyService) { 
    this.msg = this._myService.msg; 
    } 
} 

應用程序/ MyService.ts

import {Injectable, Inject} from 'angular2/core'; 
import {MY_MESSAGE} from './config'; 

@Injectable() 
export class MyService { 
    constructor(@Inject(MY_MESSAGE) private _message:String) { 
    this.msg = _message; 
    } 
} 

Plunker

相關問題