NestJS Module Provider 與 Angular Module Provider 行為不一致

在 Angular 中,外層的 Provider 會覆蓋掉 Sub Module 的 Provider
ex: https://stackblitz.com/edit/angular-qrc8dn
會顯示 InnerModule: AppModule

但在 NestJS 中,外層的 Provider 卻無法會覆蓋掉 Sub Module 的 Provider

ex:

@Module({
  providers: [{ provide: 'TOKEN', useValue: 'InnerModule' }],
})
export class InnerModule {
  constructor(@Inject('TOKEN') test: string) {
    console.log('InnerModule:', test);
  }
}

@Module({
  imports: [InnerModule],
  providers: [
    {
      provide: 'TOKEN',
      useValue: 'AppModule',
    },
  ],
})
export class AppModule {}

將會顯示 InnerModule: InnerModule

在 Angular 中,可以讓使用模組的人,再不改動程式碼的狀況下,彈性的設定一些內容,但在 Nest 中卻無法這樣做,想請問 NestJS 這樣的架構有什麼樣的優勢?

nestjs 在 module 層級 provider 註冊行為跟 Angular component provider 註冊一樣,這裡是在 GitHub 上面類似問題的 Issue