Можно ли вручную разрешить компонент, зная его имя?Angular2, вручную разрешить тип по строке/имени
У меня есть строковой переменной, которая будет содержать имя компонента, позволяет сказать «UserService»
мне нужно быть в состоянии разрешить этот тип, я смотрел на Injctor
, я могу видеть из documenation есть resolve()
и resolveAndCreate()
(https://angular.io/docs/ts/latest/api/core/Injector-class.html)
, но у меня нет Тип.
Благодаря
Стив
EDIT: попробовал следующее:
System.import("path/to/service").then(p=>{
var injector = Injector.resolveAndCreate([p[this.serviceName]]);//works
var serviceInstance = injector.get(p[this.serviceName]); //Fails with "No provider for Http! (UserService -> Http)".
});
У меня есть Http
доступны, это было предусмотрено во время начальной загрузки, и это работает для других частей приложения.
bootstrap(AppComponent, [
ROUTER_PROVIDERS, Http, HTTP_PROVIDERS, UrlBuilderService,
provide(LocationStrategy, { useClass: HashLocationStrategy }),
provide('notification', { useClass: NotificationService })
]);
Есть идеи?
Далее Edit:
я теперь называю resolveAndCreate
так:
var injector = Injector.resolveAndCreate([p[this.serviceName], Http]);
, который потерпел неудачу с
Нет провайдера для ConnectionBackend! (UserService -> Http -> ConnectionBackend)
Так я назвал это так:
var injector = Injector.resolveAndCreate([p[this.serviceName], Http, ConnectionBackend]);
, который не смог с каким-либо другим не хватает материала.
Измененный к этому
var injector = Injector.resolveAndCreate([p[this.serviceName], HTTP_PROVIDERS]);
и теперь все работает.
Я не понимаю, почему это не автоматически разрешает эти компоненты, потому что я предоставлял их во время загрузки.
Благодарим вас за идею, это частично. См. Мой обновленный вопрос для получения дополнительной информации. Спасибо –