2016-02-02 38 views
34

當我在模板中使用自定義管道時,就像這樣。它運作良好。在Angular 2的代碼中可以使用管道嗎?

{{user|userName}} 

是否可以在代碼中使用管道?我嘗試使用這樣的,

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

但它顯示使用db.collection.findOne()在代碼中手動

用戶名不是定義

我的另一種方式。但是有沒有什麼聰明的方法?

+0

,你要管注入到你的構造器 –

+0

對不起,我會清楚。我已經注入了管道 –

+0

你想在代碼中使用哪個管道?這是你的自定義管道嗎? – Siva

回答

41

@Siva是正確的。謝謝!

所以使用管道組件中的方法是這樣的:

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事實上,它需要在'providers'中。將'YouPipeComponentName'添加到您的'providers'中,並且此方法將完美工作。 – SrAxi

+0

另外請確保您將其添加到正確的提供商。如果您想全局使用管道,請將其放入app.module提供程序中。如果您只想在某些懶惰加載的模塊中使用它,請將其放入各自的模塊提供程序中 – Phil

相關問題