2017-01-20 23 views
1

在我的應用程序將需要創建一個函數庫,以從不同的組件進行訪問。做這個的最好方式是什麼?我是否需要爲所有功能或類或模塊或組件提供服務?角2個函數庫

在這個庫中,如果我把從一個組成部分,該功能需要在調用訪問變量的函數,這將是可能的嗎?

+0

非詳細的解答:創建一個服務,導入服務,則調用服務的功能從其他組件 – jhhoff02

回答

2

如果它只是一個斷輔助功能組中的一個最簡單的方法是創建您的helper方法的@Injectable服務再注入到這一點,需要他們的任何部件。你也可以提供公共變量,所以它們可以在你的html中訪問。

@Injectable() 
export class Helpers { 
    helper1() { return "hello"; } 
    helper2(x) { return x + 1 } 
} 

@Component({ 
    providers: [Helpers], 
    template: "<div>{{helper1()}}</div>"  // will display 'hello' 
)} 
export class MyComponent { 
    public helper1: Function = Helpers.helper1; 

    constructor() { 
     console.log(Helpers.helper2(5)); // will output '6' 
    } 
} 

這對一組簡單的隨機效用函數很有用。如果您需要更深入的內容,請解釋,我們可以提供備用解決方案。

+0

這是偉大的,它是我真正需要的是肯定的。我以這種方式在這裏做了,但發現了一個限制。在我的服務中,我無法訪問組件中的變量,因爲我使用的是模式驅動的表單,在某些需要訪問表單的函數中。是否有可能不發送表單作爲參數? –

+0

啊作爲服務沒有,如果它完全分開,你可以通過參數傳遞,但你說你不想這樣做。如果你需要以一種有意義的方式與組件進行交互,你可能會想創建一個組件類消費這項服務的同時,通過@input和輸出 –

+0

理解父組件進行交互。我會盡力按照這種方式。非常感謝約書亞。 –