Здравствуйте.
Модуль это по сути экземпляр приложения и он позволяет использовать сервис локатор и DI как и сам Yii2.
Если я правильно понимаю ваш вопрос, то вам нужно подключить в конфигурации модуля ваш компонент через DI контейнер. Тогда он будет доступен из модуля.
В конфигурации это может выглядеть примерно так:
//...
'modules' => [
'shop' => [
'class' => 'common\modules\shop\Module',
'components' => [
'cart' => [
'class' => 'common\modules\shop\components\Cart',
'property' => 'value',
],
],
],
],
//...
В классе common\modules\shop\Module заводите публичные поля components и cart. А в методе common\modules\shop\Module::init() осуществляете инициализацию вашего компонента Cart через
$this->cart = Yii::createObject($this->components['cart']), как написано в оф.доках:
// create an object using a configuration array
$object = Yii::createObject([
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=127.0.0.1;dbname=demo',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
]);
Можно все это сделать и без конфигурирования, просто используя DI в методе init() вашего модуля. Но тогда код будет сильно связанным и вы не сможете конфигурировать ваш компонент без правок кода модуля.