From 7de8ee960dd6adf2cdd2713fc55eeaa6b68ca7b1 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 24 Jan 2022 19:32:55 +0100 Subject: [PATCH] Revert "feat(common): add injector input to ngTemplateOutlet (#44761)" (#44807) This reverts commit ed21f5c75378e1ce717ee3d76d28c8c994209de1. PR Close #44807 --- goldens/public-api/common/common.md | 3 +- .../src/directives/ng_template_outlet.ts | 19 +++--------- .../directives/ng_template_outlet_spec.ts | 30 ++----------------- 3 files changed, 7 insertions(+), 45 deletions(-) diff --git a/goldens/public-api/common/common.md b/goldens/public-api/common/common.md index d5079133cd4..878431650b5 100644 --- a/goldens/public-api/common/common.md +++ b/goldens/public-api/common/common.md @@ -581,9 +581,8 @@ export class NgTemplateOutlet implements OnChanges { ngOnChanges(changes: SimpleChanges): void; ngTemplateOutlet: TemplateRef | null; ngTemplateOutletContext: Object | null; - ngTemplateOutletInjector: Injector | null; // (undocumented) - static ɵdir: i0.ɵɵDirectiveDeclaration; + static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } diff --git a/packages/common/src/directives/ng_template_outlet.ts b/packages/common/src/directives/ng_template_outlet.ts index cd3da1dc063..4ddb84391b1 100644 --- a/packages/common/src/directives/ng_template_outlet.ts +++ b/packages/common/src/directives/ng_template_outlet.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {Directive, EmbeddedViewRef, Injector, Input, OnChanges, SimpleChanges, TemplateRef, ViewContainerRef} from '@angular/core'; +import {Directive, EmbeddedViewRef, Input, OnChanges, SimpleChange, SimpleChanges, TemplateRef, ViewContainerRef} from '@angular/core'; /** * @ngModule CommonModule @@ -49,9 +49,6 @@ export class NgTemplateOutlet implements OnChanges { */ @Input() public ngTemplateOutlet: TemplateRef|null = null; - /** Injector to be used within the embedded view. */ - @Input() public ngTemplateOutletInjector: Injector|null = null; - constructor(private _viewContainerRef: ViewContainerRef) {} ngOnChanges(changes: SimpleChanges) { @@ -62,17 +59,9 @@ export class NgTemplateOutlet implements OnChanges { viewContainerRef.remove(viewContainerRef.indexOf(this._viewRef)); } - if (this.ngTemplateOutlet) { - const { - ngTemplateOutlet: template, - ngTemplateOutletContext: context, - ngTemplateOutletInjector: injector - } = this; - this._viewRef = viewContainerRef.createEmbeddedView( - template, context, injector ? {injector} : undefined); - } else { - this._viewRef = null; - } + this._viewRef = this.ngTemplateOutlet ? + viewContainerRef.createEmbeddedView(this.ngTemplateOutlet, this.ngTemplateOutletContext) : + null; } else if ( this._viewRef && changes['ngTemplateOutletContext'] && this.ngTemplateOutletContext) { this._viewRef.context = this.ngTemplateOutletContext; diff --git a/packages/common/test/directives/ng_template_outlet_spec.ts b/packages/common/test/directives/ng_template_outlet_spec.ts index 485cf4007e8..ee3132180eb 100644 --- a/packages/common/test/directives/ng_template_outlet_spec.ts +++ b/packages/common/test/directives/ng_template_outlet_spec.ts @@ -7,7 +7,7 @@ */ import {CommonModule} from '@angular/common'; -import {Component, ContentChildren, Directive, Inject, Injectable, InjectionToken, Injector, NO_ERRORS_SCHEMA, OnDestroy, QueryList, TemplateRef} from '@angular/core'; +import {Component, ContentChildren, Directive, Injectable, NO_ERRORS_SCHEMA, OnDestroy, QueryList, TemplateRef} from '@angular/core'; import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing'; import {expect} from '@angular/platform-browser/testing/src/matchers'; @@ -29,13 +29,7 @@ describe('NgTemplateOutlet', () => { beforeEach(() => { TestBed.configureTestingModule({ - declarations: [ - TestComponent, - CaptureTplRefs, - DestroyableCmpt, - MultiContextComponent, - InjectValueComponent, - ], + declarations: [TestComponent, CaptureTplRefs, DestroyableCmpt, MultiContextComponent], imports: [CommonModule], providers: [DestroyedSpyService] }); @@ -268,19 +262,8 @@ describe('NgTemplateOutlet', () => { expect(componentInstance.context1).toEqual({name: 'two'}); expect(componentInstance.context2).toEqual({name: 'one'}); }); - - it('should be able to specify an injector', waitForAsync(() => { - const template = `` + - ``; - fixture = createTestComponent(template); - fixture.componentInstance.injector = - Injector.create({providers: [{provide: templateToken, useValue: 'world'}]}); - detectChangesAndExpectText('Hello world'); - })); }); -const templateToken = new InjectionToken('templateToken'); - @Injectable() class DestroyedSpyService { destroyed = false; @@ -307,15 +290,6 @@ class TestComponent { currentTplRef!: TemplateRef; context: any = {foo: 'bar'}; value = 'bar'; - injector: Injector|null = null; -} - -@Component({ - selector: 'inject-value', - template: 'Hello {{tokenValue}}', -}) -class InjectValueComponent { - constructor(@Inject(templateToken) public tokenValue: string) {} } @Component({