Say I ein Rohr wie so zu erstellen:Angular 2 benutzerdefinierte Rohr mit Dependency Injection
import { Pipe, PipeTransform } from '@angular/core';
import { CurrencyPipe } from '@angular/common';
@Pipe({
name: 'awesomePipe'
})
export class AwesomePipe implements PipeTransform {
constructor(private currency: CurrencyPipe){}
transform(value: number) {
return this.currency
.transform(value.toString(), 'USD', true)
.substring(0, 3) + 'bajillion dollars';
}
}
Dieses wird dann in einer Komponente injiziert:
import { AwesomePipe } from '../pipes/awesome.pipe';
......
......
export class Awesome {
awesomeness:[number] = [123123123123,32131231235,56465434565];
constructor(private awesome: AwesomePipe){}
}
und wird verwendet mit:
template: `
<div class="foo">
<custom-component
[displayValues]="awesomeness.map(awesome.transform)"
></custom-component>
</div>
`,
Das schlägt in der Transformationsfunktion mit:
VM8019:1 Uncaught ReferenceError: currency is not defined
Das Hinzufügen eines Debuggers in der Transformationsfunktion zeigt this
als undefiniert an.
Warum? Und wie kann ich das beheben?