angular - 解决路由器错误:未捕获错误:无法解析 MemberListResolver 的所有参数:
问题描述
我在 Angular 中创建解析器时遇到问题。当我启动应用程序时,我给出了一个未捕获的错误:无法解析 MemberListResolver 的所有参数:(?)。错误。有人能帮我吗?
我的解析器类:
Injectable({providedIn: 'root'})
export class MemberListResolver implements Resolve<User[]> {
constructor(private userService: UserService){}
resolve() {
return this.userService.getUsers();
}
}
我注册了路由器
{ path: 'members', component: MemberlistComponent,
resolve: { users: MemberListResolver }
},
在 app.module.ts 中:
providers: [ MemberListResolver ]
我调用组件:
export class MemberlistComponent implements OnInit {
constructor(private userService: UserService,
private alertify: AlertifyService,
private route: ActivatedRoute
) {
}
users: User[];
ngOnInit() {
this.route.data.subscribe(data => {
this.users = data['users'];
});
}
}
解决方案
有很多原因可以做到这一点:
1-似乎您在关键字@
之前忘记了装饰器Injectable
MemberListResolver
应该@Injectable
不是Injectable
2-如果这也不起作用,则需要将此 polyfill 导入src/polyfills.ts
文件
import 'core-js/es7/reflect';
3-如果您更新了Angular
版本或Angular/CLI
版本,则删除node_modules
并运行npm install
注意:只要您使用,您就不需要将 添加
Service
到providers
数组中,这将使该服务的相同版本也可用于整个应用程序app.module.ts
{ providedIn: 'root' }
因此,只要您需要使该服务实例在应用程序范围内可用,请选择两种方式之一
希望这会有所帮助
推荐阅读
- asp.net-core - InvalidOperationException:尝试激活 Controller 时无法解析类型“*Models.LandingPageContext”的服务
- r - ggalluvial中的矩形分组
- google-ads-api - 如何将搜索查询传递到 Google Ads(搜索)的着陆页网址
- javascript - 我想在java中将docx转换为多页html
- python - Dataframe.replace() 不会替换所有列中的 vlaues
- mysql - 使用 ASP Classic 在 MySQL 中注册表情符号时出现问题
- javascript - 在网络应用上禁用 Chrome 移动设备的“点按搜索”
- azure - 关于桌面上的 IoT EDGE 服务器设置
- bash - Bash for 具有多个条件的循环
- javascript - 无法从 graphql 突变更新 mongodb 集合