UNPKG

@yaagoub/decorators

Version:

Angular decorators

46 lines 3.85 kB
/** * @description * The `YgbInjector` class provides a static way to set and use an Angular `Injector`. * This allows for dependency injection to be managed and accessed globally within the application. * * @example * To set the injector, use the following code in your `app.config.ts`: * ```typescript * { * provide: APP_INITIALIZER, * useFactory: (injector: Injector) => () => YgbInjector.setInjector(injector), * deps: [Injector], * multi: true, * } * ``` * * @example * To inject a dependency: * ```typescript * const myService = YgbInjector.inject<MyService>(MyService); * ``` */ // ❌ DO NOT decorate with @Injectable() export class YgbInjector { static injector; static setInjector(injector) { if (YgbInjector.injector) return; YgbInjector.injector = injector; } static inject(token) { if (!YgbInjector.injector) { throw new Error(` Injector has not been set. Use the following code in your app.config.ts: { provide: APP_INITIALIZER, useFactory: (injector: Injector) => () => YgbInjector.setInjector(injector), deps: [Injector], multi: true, }, `); } return YgbInjector.injector.get(token); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWdiLWluamVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9kZWNvcmF0b3JzL3NyYy9nbG9iYWwveWdiLWluamVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFJSCx1Q0FBdUM7QUFDdkMsTUFBTSxPQUFPLFdBQVc7SUFDZCxNQUFNLENBQUMsUUFBUSxDQUFXO0lBRWxDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBa0I7UUFDbkMsSUFBSSxXQUFXLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDakMsV0FBVyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUksS0FBVTtRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUM7Ozs7Ozs7O1NBUWIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUNELE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoZSBgWWdiSW5qZWN0b3JgIGNsYXNzIHByb3ZpZGVzIGEgc3RhdGljIHdheSB0byBzZXQgYW5kIHVzZSBhbiBBbmd1bGFyIGBJbmplY3RvcmAuXG4gKiBUaGlzIGFsbG93cyBmb3IgZGVwZW5kZW5jeSBpbmplY3Rpb24gdG8gYmUgbWFuYWdlZCBhbmQgYWNjZXNzZWQgZ2xvYmFsbHkgd2l0aGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqXG4gKiBAZXhhbXBsZVxuICogVG8gc2V0IHRoZSBpbmplY3RvciwgdXNlIHRoZSBmb2xsb3dpbmcgY29kZSBpbiB5b3VyIGBhcHAuY29uZmlnLnRzYDpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHtcbiAqICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICogICB1c2VGYWN0b3J5OiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiAoKSA9PiBZZ2JJbmplY3Rvci5zZXRJbmplY3RvcihpbmplY3RvciksXG4gKiAgIGRlcHM6IFtJbmplY3Rvcl0sXG4gKiAgIG11bHRpOiB0cnVlLFxuICogfVxuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqIFRvIGluamVjdCBhIGRlcGVuZGVuY3k6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBteVNlcnZpY2UgPSBZZ2JJbmplY3Rvci5pbmplY3Q8TXlTZXJ2aWNlPihNeVNlcnZpY2UpO1xuICogYGBgXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG4vLyDinYwgRE8gTk9UIGRlY29yYXRlIHdpdGggQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFlnYkluamVjdG9yIHtcbiAgcHJpdmF0ZSBzdGF0aWMgaW5qZWN0b3I6IEluamVjdG9yO1xuXG4gIHN0YXRpYyBzZXRJbmplY3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBpZiAoWWdiSW5qZWN0b3IuaW5qZWN0b3IpIHJldHVybjtcbiAgICBZZ2JJbmplY3Rvci5pbmplY3RvciA9IGluamVjdG9yO1xuICB9XG5cbiAgc3RhdGljIGluamVjdDxUPih0b2tlbjogYW55KTogVCB7XG4gICAgaWYgKCFZZ2JJbmplY3Rvci5pbmplY3Rvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBcbiAgSW5qZWN0b3IgaGFzIG5vdCBiZWVuIHNldC4gVXNlIHRoZSBmb2xsb3dpbmcgY29kZSBpbiB5b3VyIGFwcC5jb25maWcudHM6XG4gIHtcbiAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgdXNlRmFjdG9yeTogKGluamVjdG9yOiBJbmplY3RvcikgPT4gKCkgPT4gWWdiSW5qZWN0b3Iuc2V0SW5qZWN0b3IoaW5qZWN0b3IpLFxuICAgIGRlcHM6IFtJbmplY3Rvcl0sXG4gICAgbXVsdGk6IHRydWUsXG4gIH0sXG4gICAgICAgIGApO1xuICAgIH1cbiAgICByZXR1cm4gWWdiSW5qZWN0b3IuaW5qZWN0b3IuZ2V0KHRva2VuKTtcbiAgfVxufVxuIl19