2016-05-02 19 views
0

我忙于学习Angular2,我不知道bind()provide()之间有什么区别。在我的应用程序中,我似乎找不到任何区别,所以我想知道差异是什么,以便更好地决定使用哪一个。目前我正在使用最新版本的Angular2:beta17在Angular2中绑定和提供的区别

绑定

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 }) 
]); 

回答

2

由于冈特说,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: ... }); 
相关问题