NullInjectorError 仅在路由解析器上

NullInjectorError only on route resolver

我在功能模块中声明了一个组件,带有路由模块

import { TestResolverService } from './service/test.resolver.service';
import { MyComponent } from './containers/my-component/mycomponent.component';


const routes: Routes =
  [
    {
        path: '',
        component: MyComponent,
        resolve: TestResolverService
    },
  ];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class MyRoutingModule { }

TestResolverService 在此处的同一模块中定义:

@Injectable({
  providedIn: 'root'
})
export class TestResolverService implements Resolve<void>{

  constructor() { }
  resolve(x, y) {}
}

模块是从根延迟加载的:

{path: 'mymodule', loadChildren: () => import('./features/test/mymodule.module').then(m => m.MyModule)}

每当我尝试加载带有 resolve 的页面时,我都会收到以下错误:

ERROR Error: Uncaught (in promise): NullInjectorError: R3InjectorError(PathwaysModule)[TestResolverService_Factory -> TestResolverService_Factory -> TestResolverService_Factory -> TestResolverService_Factory]: 
  NullInjectorError: No provider for TestResolverService_Factory!
NullInjectorError: R3InjectorError(MyModule)[TestResolverService_Factory -> TestResolverService_Factory -> TestResolverService_Factory -> TestResolverService_Factory]: 
  NullInjectorError: No provider for TestResolverService_Factory! 

我错过了什么?页面在没有 resolve 的情况下加载正常,并且直接从组件导入和调用服务也可以。只有当作为解析器引用时,我才会遇到这个问题。

我可以通过将 resolve: TestResolverService 更改为

来解决这个问题
resolve: { resolver: TestResolverService }

我把解析类型弄错了。