我正忙着学习Angular2,我想知道bind()
和provide()
之间有什么区别。在我的应用程序中,我似乎无法找到任何差异,所以我想知道差异是什么,以便更好地决定使用哪一个。目前我正在使用最新版本的 Angular2:beta17 。
示例绑定:
import { bootstrap } from 'angular2/platform/browser';
import { ROUTER_PROVIDERS } from 'angular2/router'
import { LocationStrategy, HashLocationStrategy } from 'angular2/platform/common';
import { bind } from 'angular2/core';
// Main Component
import { AppComponent } from './app.component';
bootstrap(AppComponent, [
ROUTER_PROVIDERS,
bind(LocationStrategy).toClass(HashLocationStrategy)
]);
示例提供:
import { bootstrap } from 'angular2/platform/browser';
import { ROUTER_PROVIDERS } from 'angular2/router'
import { LocationStrategy, HashLocationStrategy } from 'angular2/platform/common';
import { provide } from 'angular2/core';
// Main Component
import { AppComponent } from './app.component';
bootstrap(AppComponent, [
ROUTER_PROVIDERS,
provide(LocationStrategy, { useClass: HashLocationStrategy })
]);
答案 0 :(得分:2)
bind
只是provide
已弃用的前身,并且完全相同。
另见https://github.com/angular/angular/blob/master/modules/@angular/core/src/di/provider.ts#L254
答案 1 :(得分:2)
正如Günter所说,bind
已被弃用,与provide
不同。
provide
函数只是一个调用Provider
类的构造函数的包装器:
provide(token, { ... });
与:
相同new Provider(token, { ... });
bind
利用ProviderBuilder
帮助程序类来构建提供程序。虽然不推荐bind
,但ProviderBuilder
不是,可以这样使用:
ProviderBuilder pb = new ProviderBuilder();
pb.toClass(type);
pb.toValue(value);
pb.toFactory(factory);
与:
相同new Provider(token, { useClass: ... });
new Provider(token, { useValue: ... });
new Provider(token, { useFactory: ... });