Browse Source

feat: keep element as public property on loading strategy

pull/4133/head
Arman Ozak 6 years ago
parent
commit
9a0c250374
  1. 8
      npm/ng-packs/packages/core/src/lib/strategies/loading.strategy.ts
  2. 2
      npm/ng-packs/packages/core/src/lib/tests/loading.strategy.spec.ts

8
npm/ng-packs/packages/core/src/lib/strategies/loading.strategy.ts

@ -5,6 +5,8 @@ import { CrossOriginStrategy, CROSS_ORIGIN_STRATEGY } from './cross-origin.strat
import { DomStrategy, DOM_STRATEGY } from './dom.strategy';
export abstract class LoadingStrategy<T extends HTMLScriptElement | HTMLLinkElement = any> {
element: T;
constructor(
public path: string,
protected domStrategy: DomStrategy = DOM_STRATEGY.AppendToHead(),
@ -14,10 +16,10 @@ export abstract class LoadingStrategy<T extends HTMLScriptElement | HTMLLinkElem
abstract createElement(): T;
createStream<E extends Event>(): Observable<E> {
this.element = this.createElement();
return of(null).pipe(
switchMap(() =>
fromLazyLoad<E>(this.createElement(), this.domStrategy, this.crossOriginStrategy),
),
switchMap(() => fromLazyLoad<E>(this.element, this.domStrategy, this.crossOriginStrategy)),
);
}
}

2
npm/ng-packs/packages/core/src/lib/tests/loading.strategy.spec.ts

@ -39,6 +39,7 @@ describe('ScriptLoadingStrategy', () => {
const strategy = new ScriptLoadingStrategy(path, domStrategy, crossOriginStrategy);
strategy.createStream<CustomEvent>().subscribe(event => {
expect(strategy.element.tagName).toBe('SCRIPT');
expect(event.detail.crossOrigin).toBe('use-credentials');
done();
});
@ -78,6 +79,7 @@ describe('StyleLoadingStrategy', () => {
const strategy = new StyleLoadingStrategy(path, domStrategy, crossOriginStrategy);
strategy.createStream<CustomEvent>().subscribe(event => {
expect(strategy.element.tagName).toBe('LINK');
expect(event.detail.crossOrigin).toBe('use-credentials');
done();
});

Loading…
Cancel
Save