2017-07-19 83 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