2016-02-07 15 views
15

मैं कोणीय 2 पाइप में सेवा जैसी निर्भरताओं को कैसे इंजेक्ट कर सकता हूं?पाइप में कोणीय 2 निर्भरता इंजेक्शन

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)); 
    } 
} 

उत्तर

30

आप इस तरह निर्माता में निर्भरता इंजेक्षन कर सकते हैं:

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)); 
    } 
} 

मत भूलना सुनिश्चित करें कि आप एप्लिकेशन मॉड्यूल को यह निर्भरता को जोड़ने बनाने के लिए:

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

धन्यवाद! क्या आपको पता है कि पूरे एप्लिकेशन की बजाय केवल पाइप के लिए 'टेस्ट सर्विस' इंजेक्ट करने का कोई तरीका है या नहीं? जैसे एक 'प्रदाताओं' सरणी के साथ। – maximedupre

+0

मुझे नहीं लगता कि यह संभव है। केवल नाम और शुद्ध गुणों को छोड़कर पाइप सजावट। – Bazinga

+1

@maximedupre आप एक 'NgModule' का उपयोग कर सकते हैं जो केवल आपकी पाइप घोषित करता है। 'टेस्ट सेवा' केवल उस मॉड्यूल में प्रदान की जाएगी, इस प्रकार 'टेस्ट सेवा' केवल पाइप के लिए उपलब्ध है, न कि संपूर्ण आवेदन। –

संबंधित मुद्दे