I do not see any complications with it.  It’s a design choice and you can write code to achieve that.
I.e., you can choose to train submodule1 first,  then submodule2 or vice versa,  it’s all upto how you write the code, use the optimizer (or) loss functions appropriately etc. Do you face any issues while doing that?