2016-05-02 16 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: ... }); 
Смежные вопросы