// Модуль 2
window.Module2 = {
bar: function() {
window.Module1.foo();
}
};
// Модуль 1
window.Module1 = {
foo: function() {}
};
// Модуль 2
var module1 = window.Module1;
window.Module2 = {
bar: function() {
module1.foo();
}
};
// Модуль 1
window.Module1 = {
foo: function() {}
};
interface BaseComponent {}
class MyComponent implements BaseComponent {}
component: BaseComponent = MyComponent
// Инжектим в наш компонент-контейнер следующее
private _cfr: ComponentFactoryResolver,
private _vcr: ViewContainerRef
// Для создания компонента руками
// описываем переопределения зависимостей
// Компонент передан в переменной componentClass
const componentProviders = ReflectiveInjector.resolve([
{ provide: Something, useValue: 1 }
]);
// Получаем фабрику из класса нашего компонента, который рендерим
const componentFactory = this._cfr.resolveComponentFactory(componentClass);
// Создаем для него инжектор - используем .parentInjector или .injector нашего текущего компонента, исходя из того, какую иерархию DI нам нужно получить для создаваемого компонента
const childInjector = ReflectiveInjector.fromResolvedProviders(componentProviders, this._vcr.parentInjector);
// Фабрикой создаем экземпляр компонента
let instance = componentFactory.create(childInjector, []);
// Вставляем во view нашего компонента
this._vcr.insert(instance.hostView, this._vcr.length);
// Запускаем отслеживание изменений
instance.componentRef.changeDetectorRef.detectChanges();
let req = Zone.current.get('req'); // Express request object
let res = Zone.current.get('res'); // Express response object