2017-07-19 84 views
0

我是Angular 2的新手。我正在開發一個電子商務網站,並且我爲用戶,項目,出價等設計了一些基本的課程...... My User class has許多參數,其中一些是:Angular 2 - 在課堂上運行服務

export class User { 
    id:    number; 
    name:   string; 
    email:   string; 
    ... 
    notifications: Notification[]; 
} 

通知類,只有兩個參數如下:

export class Notification { 
    notification:  string; 
    read:    boolean; 
} 

我有一個用戶服務,另一個用於通知。

情況是這樣的:當用戶讀取通知時,我必須向服務器發出請求,以更改數據庫中通知的「讀取標誌」的值。要做到這一點,在我的部分,我可以這樣做:

this.notificationService.changeToRead(user.notifications[x]).subscribe(...); 

在前面的線我想象notificationService是有一個名爲changeToRead方法NotificationService的一個實例(通知:通知),它執行的請求。

我這個問題是,它似乎是程序性的,我想更像一個面向對象的解決方案:

user.notifications[x].changeToRead(); 

要做到這一點,我必須在類通知的方法changeToRead(),但似乎我無法將註冊服務註冊到課程中......但即使可以,我也不需要像通知一樣提供儘可能多的服務實例...

我不確定是否我因爲我的英語不好,很明顯,但我需要找到一種解決方案,使我的請求更像面向對象......

有什麼想法?

+0

使用這個'class'的任何理由。它想用你的答案感謝@ @ Component' – Aravind

回答

0

您可能需要考慮使用當前的Angular模式構建Angular應用程序,而不是引入Angular中不常用的OOP模式。

雖這麼說,我是能夠使用這樣的「注入」的服務到類:

在類:

constructor(private productService: ProductService) { 

    } 

在使用該類組件代碼:

ngOnInit(): void { 
    let product = new IProduct(this.productService); 
} 
+0

。是的,我已經嘗試過按照你所說的「注入」一項服務,但我似乎並未「清理」。 當你說「當前的Angular模式」時,你是什麼意思? Angular在組件中注入正確的編程方式並以程序的方式使用它?我的意思是,我正在尋找使用面向對象的方式,因爲我認爲它是最乾淨的,但是如果沒有,我會盡可能地去做... – user3368457

+0

是的,這是在Angular中編程的「正確」方式,以便將服務注入到零件。不知道這是「程序性的」。該服務只是一個單例對象,您可以使用OOP技術調用它。 – DeborahK

+0

啊,完美!那麼,我會繼續如此!非常感謝你@DeborahK – user3368457