Angular2 中绑定和提供的区别
Difference between bind and provide in Angular2
我正在忙于学习 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 })
]);
bind
只是 provide
的已弃用的前身,并且完全相同。
另见 https://github.com/angular/angular/blob/master/modules/@angular/core/src/di/provider.ts#L254
正如 Günter 所说,与 provide
不同,bind
已被弃用。
provide
函数只是一个调用 Provider
class:
构造函数的包装器
provide(token, { ... });
等于:
new Provider(token, { ... });
bind
利用 ProviderBuilder
帮助程序 class 构建提供程序。尽管 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: ... });
我正在忙于学习 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 })
]);
bind
只是 provide
的已弃用的前身,并且完全相同。
另见 https://github.com/angular/angular/blob/master/modules/@angular/core/src/di/provider.ts#L254
正如 Günter 所说,与 provide
不同,bind
已被弃用。
provide
函数只是一个调用 Provider
class:
provide(token, { ... });
等于:
new Provider(token, { ... });
bind
利用 ProviderBuilder
帮助程序 class 构建提供程序。尽管 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: ... });