Skip to main content

Module: decorators/optional

Functions​

optional​

▸ optional(serviceIdentifier?): (target: object, key?: string, index?: number) => void

Description​

You can use @optional() to decorate an optionally injected module.

If other modules have no relevant dependency injection or are also optionally injected, the module will not be injected by default unless the injected module is imported in the modules parameter.

Example​

@injectable()
class Bar {
getValue() {
return 'bar';
}
}

@injectable()
class Foo {
getValue() {
return 'foo';
}
}

@injectable()
class FooBar {
constructor(@optional() public bar: Bar, @optional('foo') public foo: Foo) {}
}

const fooBar = testBed({
modules: [
{ provide: 'foo', useClass: Foo },
],
main: FooBar,
});

expect(fooBar.instance.foo.getValue()).toBe('foo');
expect(fooBar.fooBar.bar).toBeUndefined();

Parameters​

NameType
serviceIdentifier?ServiceIdentifier<any>

Returns​

fn

▸ (target, key?, index?): void

Parameters​
NameType
targetobject
key?string
index?number
Returns​

void

Defined in​

packages/reactant-di/src/decorators/optional.ts:47