我正在发现Angular2,我在互联网上找到了一个快速启动项目,以了解结构.我有另外三个文件夹:组件,服务和模型.我理解什么是组件,因为我理解服务是单身,我想要保留我的数据.
问题是我在services文件夹中有这个文件:
import {Injectable} from "@angular/core"; import {Task} from "../models/task"; @Injectable() export class TaskService { private tasks:Array= [ new Task("Task 1", false), new Task("Task 2", false), new Task("Task 3", false), ]; getTasks():Array { return this.tasks; } addTask(name:string) { this.tasks.push(new Task(name, false)); } }
我有一个里面的模型文件夹:
export class Task { constructor(public name:string, public done:boolean) { } toggleDone() { this.done = !this.done; } }
但我不确定为什么Task被视为模型而TaskService被视为服务.是因为我可以拥有多个任务实例吗?如果是这样,那么我可以有多个TaskService实例而不是单例吗?如果没有,编译器如何知道它何时是服务以及何时是模型?因为后缀?
谢谢.
@Injectable
是答案
我们注册了一个注射类,我们不必实例化它!
我们将它注册为应用程序模块中的提供者,将其注册为我们组件中的提供者,并且嘿,你将获得注入,直接魔术,感谢Angular,你的数据boi.
更重要的是,现在我们的组件甚至不需要知道任何有关Task类的信息 - 它已经包含在我们的Injectable服务中.