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 }
我把解析类型弄错了。
我在功能模块中声明了一个组件,带有路由模块
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 }
我把解析类型弄错了。