2016-02-02 11 views
34

テンプレートでカスタムパイプを使用すると、次のようになります。それはうまくいく。角度2のコードでパイプを使用できますか?

{{user|userName}} 

それはコードで、パイプを使用することは可能ですか?私は

let name = `${user|userName}`; 

、このように使用してみてくださいしかし、それは

ユーザ名が

私の別の方法は、コード内でdb.collection.findOne()を手動で使用している定義されていません示しています。しかし、スマートな方法はありますか?

+0

あなたはこのようなテンプレートを使用することはできません、あなたは –

+0

あなたのコンストラクタにパイプを注入する必要があり申し訳ありませんが、私はそれを明確にします。私はすでにパイプを注入しています –

+0

コードで使用しようとしているパイプはどれですか?これはカスタムパイプですか? – Siva

答えて

41

@シバが正しいです。ありがとう!

ように、コンポーネントにパイプを使用する方法は、このようなものです:別の同様の質問へ

let name = new UserNamePipe().transform(user); 

Link

+0

'... transform()'はデフォルトメソッドですか? –

32

これはあなたがコンポーネントでパイプを使用することができます方法です。

import { YourPipeComponentName } from '@angular/common'; 

class YourService { 

    constructor(private pipe: YourPipeComponentName) {} 

    YourFunction(value) { 
    this.pipe.transform(value, 'pipeFilter'); 
    } 
} 
+0

いいね!しかし何らかの理由で、依存関係注入は問題なくhtmlで使用することができますが、コンストラクタにパイプを注入することはできません。それは宣言され、別のモジュールでエクスポートされます、多分それはプロバイダのリストにもある必要がありますか? MyPipeの新しいインスタンスを作成して使用することはできます。 DIだけに問題があります... – Sam

+4

@Sam実際、それは 'プロバイダー 'にある必要があります。 'YouPipeComponentName'を' providers'に追加すれば、このメソッドは完全に動作します。 – SrAxi

+0

また、正しいプロバイダに追加してください。パイプをグローバルに使用する場合は、app.moduleプロバイダに配置します。遅延ロードされたモジュールでのみ使用する場合は、それぞれのモジュールのプロバイダに配置します – Phil

関連する問題