2016-05-02 18 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: ... }); 
相關問題