2016-02-07 31 views
15

Làm thế nào tôi có thể tiêm các phụ thuộc như dịch vụ vào các ống angular2?Góc tiêm phụ thuộc 2 vào ống

import {Pipe, PipeTransform} from 'angular2/core'; 
import {MyService} from './service'; 

//How i am injecting MyService to the pipe? 

@Pipe({name: 'exponentialStrength'}) 
export class ExponentialStrengthPipe implements PipeTransform { 
    transform(value:number, args:string[]) : any { 
    return Math.pow(value, parseInt(args[0] || '1', 10)); 
    } 
} 

Trả lời

30

Bạn có thể tiêm phụ thuộc vào các nhà xây dựng như thế này:

export class ExponentialStrengthPipe implements PipeTransform { 

    constructor(public testService: TestService) { 

    } 

    transform(value:number, args:string[]) : any { 
    // you can access this.testService here 
    return Math.pow(value, parseInt(args[0] || '1', 10)); 
    } 
} 

Đừng quên để đảm bảo bạn thêm sự phụ thuộc này để các module ứng dụng:

@NgModule({ 
    declarations: [...], 
    imports: [...], 
    providers: [..., TestService], 
    bootstrap: [AppComponent], 
} 
+0

Cảm ơn! Bạn có biết nếu có một cách để tiêm 'TestService' cho chỉ Ống thay vì toàn bộ ứng dụng? ví dụ. Với mảng 'provider'. – maximedupre

+0

Tôi không nghĩ là có thể. Các trang trí ống chỉ ngoại trừ tên và tính chất tinh khiết. – Bazinga

+1

@maximedupre bạn có thể sử dụng 'NgModule' chỉ khai báo đường ống của bạn. 'TestService' sẽ chỉ được cung cấp trong module đó, do đó' TestService' chỉ có sẵn cho đường ống chứ không phải toàn bộ ứng dụng. –

Các vấn đề liên quan