Angular 2中服务和模型的区别?

Kim*_* BF 4 typescript angular

我正在发现Angular2,我在互联网上找到了一个快速启动项目,以了解结构.我有另外三个文件夹:组件,服务和模型.我理解什么是组件,因为我理解服务是单身,我想要保留我的数据.

问题是我在services文件夹中有这个文件:

import {Injectable} from "@angular/core";
import {Task} from "../models/task";

@Injectable()
export class TaskService {

    private tasks:Array<Task> = [
        new Task("Task 1", false),
        new Task("Task 2", false),
        new Task("Task 3", false),
    ];

    getTasks():Array<Task> {
        return this.tasks;
    }

    addTask(name:string) {
        this.tasks.push(new Task(name, false));
    }

}
Run Code Online (Sandbox Code Playgroud)

我有一个里面的模型文件夹:

export class Task {

    constructor(public name:string, public done:boolean) {
    }

    toggleDone() {
        this.done = !this.done;
    }
}
Run Code Online (Sandbox Code Playgroud)

但我不确定为什么Task被视为模型而TaskService被视为服务.是因为我可以拥有多个任务实例吗?如果是这样,那么我可以有多个TaskService实例而不是单例吗?如果没有,编译器如何知道它何时是服务以及何时是模型?因为后缀?

谢谢.

小智 6

@Injectable 是答案

我们注册了一个注射类,我们不必实例化它!

我们将它注册为应用程序模块中的提供者,将其注册为我们组件中的提供者,并且嘿,你将获得注入,直接魔术,感谢Angular,你的数据boi.

更重要的是,现在我们的组件甚至不需要知道任何有关Task类的信息 - 它已经包含在我们的Injectable服务中.