因此,我习惯于在Angular中使用工厂和服务。
我正在阅读Angular2文档,但看不到任何等效的工厂。Angular2的等效项是什么?
工厂,服务,常量和值都在Angular2中消失了。Angular2与经典Angular有根本性和根本性的不同。在Angular2中,核心概念是
服务,工厂,提供者和常量的概念在Angular 1中受到了批评。很难在两者之间进行选择。删除它们可以简化事情。
在原始的Angular中,您将像这样定义服务
app.service('BookService', ['$http', '$q', BookService]); function BookService($http, $q){ var self = this; var cachedBooks; self.getBooks = function(){ if (cachedBooks) { return $q.when(cachedBooks); } return $http.get('/books').then(function(response){ cachedBooks = response.data.books; return cachedBooks; }) } }
Angular2极大地利用了ES6语法,使代码更易读和易于理解。
ES6中的一个新关键字是class,可以将其视为服务。
class
ES6类是对基于原型的OO模式的简单补充。具有单个方便的声明形式使类模式更易于使用,并鼓励了互操作性。类支持基于原型的继承,超级调用,实例以及静态方法和构造函数。
这是相同的代码在Angular2中的外观
import {HttpService, Promise} from '../Angular/Angular2'; export class BookService{ $http, $q, cachedBooks; constructor($http: HttpService, $q: Promise) { this.$http = $http; this.$q = $q } getBooks() { if (this.cachedBooks) { return this.$q.when(this.cachedBooks); } return this.$http.get('/books').then(function(data) { this.cachedBooks = data.books; return this.cachedBooks; }) } }