diff --git a/npm/ng-packs/packages/core/src/lib/directives/replaceable-template.directive.ts b/npm/ng-packs/packages/core/src/lib/directives/replaceable-template.directive.ts index 309dbbcb23..35dabc52a5 100644 --- a/npm/ng-packs/packages/core/src/lib/directives/replaceable-template.directive.ts +++ b/npm/ng-packs/packages/core/src/lib/directives/replaceable-template.directive.ts @@ -33,12 +33,14 @@ export class ReplaceableTemplateDirective implements OnInit, OnDestroy, OnChange any >; - externalComponent: Type = null; // externalComponent must equal to null + externalComponent: Type; defaultComponentRef: any; defaultComponentSubscriptions = {} as ABP.Dictionary; + initialized = false; + constructor( private injector: Injector, private templateRef: TemplateRef, @@ -64,7 +66,7 @@ export class ReplaceableTemplateDirective implements OnInit, OnDestroy, OnChange .pipe( filter( (res = {} as ReplaceableComponents.ReplaceableComponent) => - !compare(res.component, this.externalComponent), + !this.initialized || !compare(res.component, this.externalComponent), ), takeUntilDestroy(this), ) @@ -86,6 +88,8 @@ export class ReplaceableTemplateDirective implements OnInit, OnDestroy, OnChange } else { this.vcRef.createEmbeddedView(this.templateRef, this.context); } + + this.initialized = true; }); } diff --git a/npm/ng-packs/packages/core/src/lib/states/replaceable-components.state.ts b/npm/ng-packs/packages/core/src/lib/states/replaceable-components.state.ts index e6d52d7c4a..41c69df94f 100644 --- a/npm/ng-packs/packages/core/src/lib/states/replaceable-components.state.ts +++ b/npm/ng-packs/packages/core/src/lib/states/replaceable-components.state.ts @@ -33,12 +33,12 @@ export class ReplaceableComponentsState { ) { let { replaceableComponents } = getState(); - if (replaceableComponents && replaceableComponents.length) { - const index = replaceableComponents.findIndex(component => component.key === payload.key); - - if (index > -1) { - replaceableComponents[index] = payload; - } + const index = snq( + () => replaceableComponents.findIndex(component => component.key === payload.key), + -1, + ); + if (index > -1) { + replaceableComponents[index] = payload; } else { replaceableComponents = [...replaceableComponents, payload]; }