Wrapper classes around inversifyJS container library. You can create a component by inject all its dependencies.
Create a component R1Component using TxRouteContainer injector.
// define a component something like this.
@injectable()
export class Q1Component {
@inject(TxTYPES.TxRoutePoint) routepoint;
constructor() {
}
async init() {
...
}
}
// prepare injector for Q1Component - this done one time.
TxRouteContainer.setDriver(TxConnectorExpress);
TxRouteContainer.addComponent<R1Component>(R1Component, 'R1Component');
// create new 'R1Component' component under the name 'R1COMPONENT::ROUTE::CONTAINER'
co = TxRouteContainer.get('Q1Component', 'R1COMPONENT::ROUTE::CONTAINER');
// send something to queue.
co.routepoint.route.next(..);
Create a component R2 which has some other member in it.
// define R2Component which has other member.
@injectable()
export class QMember {
@inject('QMember::name') name: string;
constructor() {}
....
}
@injectable()
export class R3Component {
@inject(TxTYPES.TxRoutePoint) routepoint;
@inject('RMember') rmember: RMember;
constructor() {}
async init() { ... }
getRMember() {
return this.rmember;
}
}
// prepare injector for R2Component, this done once
TxRouteContainer.setDriver(TxConnectorExpress);
TxRouteContainer.addComponent<R1Component>(R3Component, 'R3Component');
TxRouteContainer.addBind<RMember>(RMember, 'RMember');
// create 'R3Component' where name 'tsemach' is inject into RMember of R2Component
TxRouteContainer.addBindConstantValue<string>('RMember::name', 'tsemach');
cp = TxRouteContainer.get('R3Component', 'R3COMPONENT::ROUTE::CONTAINER');