Skip to content

Instantly share code, notes, and snippets.

View alexzuza's full-sized avatar
🎯
Focusing

Alexey Zuev alexzuza

🎯
Focusing
View GitHub Profile
import { Component } from '@angular/core';
import { ControlContainer, NgForm } from '@angular/forms';
@Component({
selector: 'address',
template: `
<fieldset ngModelGroup="address">
<div>
<label>Zip:</label>
@alexzuza
alexzuza / di_debug_ngmodule_injector.ts
Last active February 20, 2020 22:37
DI debug Root NgModule Injector
ng.probe(getAllAngularRootElements()[0]).injector.view.root.ngModule._providers
@alexzuza
alexzuza / di_platform_provider_example.ts
Created March 19, 2018 19:38
DI example of platform provider
const platform = platformBrowserDynamic([ {
provide: SharedService,
deps:[]
}]);
platform.bootstrapModule(AppModule);
platform.bootstrapModule(AppModule2);
@alexzuza
alexzuza / di_debug_platform_injector.ts
Last active March 20, 2018 14:03
DI debug platform injector
ng.probe(getAllAngularRootElements()[0]).injector.view.root.ngModule._parent.parent._records;
// to see stringified value use
ng.probe(getAllAngularRootElements()[0]).injector.view.root.ngModule._parent.parent.toString()
@alexzuza
alexzuza / di_root_data.ts
Created March 19, 2018 19:41
DI root data
function createRootData(
elInjector: Injector, ngModule: NgModuleRef<any>, rendererFactory: RendererFactory2,
projectableNodes: any[][], rootSelectorOrNode: any): RootData {
const sanitizer = ngModule.injector.get(Sanitizer);
const errorHandler = ngModule.injector.get(ErrorHandler);
const renderer = rendererFactory.createRenderer(null, null);
return {
ngModule,
injector: elInjector, projectableNodes,
selectorOrNode: rootSelectorOrNode, sanitizer, rendererFactory, renderer, errorHandler
@alexzuza
alexzuza / di_simple_application.ts
Created March 19, 2018 19:42
DI simple application
@Component({
selector: 'my-app',
template: `<child></child>`,
})
export class AppComponent {}
@Component({
selector: 'child',
template: `<grand-child></grand-child>`
})
@alexzuza
alexzuza / di_bootstrap.ts
Created March 19, 2018 19:44
DI bootstrap
platformBrowserDynamic().bootstrapModule(AppModule);
@alexzuza
alexzuza / di_entry_component.ts
Created March 19, 2018 19:45
DI creating entry component
const compRef = componentFactory.create(Injector.NULL, [], selectorOrNode, ngModule);
@alexzuza
alexzuza / di_merge_injector.ts
Created March 19, 2018 19:46
DI merge injector
@Directive({
selector: '[someDir]'
}
export class SomeDirective {
constructor(private injector: Injector) {}
}
@alexzuza
alexzuza / di_merge_injector_signature.ts
Last active March 20, 2018 14:04
DI merge injector signature
class Injector_ implements Injector {
constructor(private view: ViewData, private elDef: NodeDef|null) {}
get(token: any, notFoundValue: any = Injector.THROW_IF_NOT_FOUND): any {
const allowPrivateServices =
this.elDef ? (this.elDef.flags & NodeFlags.ComponentView) !== 0 : false;
return Services.resolveDep(
this.view, this.elDef, allowPrivateServices,
{flags: DepFlags.None, token, tokenKey: tokenKey(token)}, notFoundValue);
}
}