解决路由器错误: 未捕获错误: 无法解析成员列表解析程序的所有参数:



在Angular中创建Resolver时遇到问题。当我开始申请时,我给出了未捕获的错误:无法解析MemberListResolver的所有参数:(?(。错误有人能帮我吗?

我的Resolver类:

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-您似乎忘记了MemberListResolverInjectable关键字之前的@装饰器

应该是@Injectable而不是Injectable

2-如果这也不起作用,你需要将这个polyfill导入src/polyfills.ts文件

import 'core-js/es7/reflect';

3-如果您更新了Angular版本或Angular/CLI版本,则删除node_modules并运行npm install

注意:只要使用{ providedIn: 'root' },就不需要将Service添加到app.module.ts中的providers阵列中,这将使整个应用程序中也可以使用相同版本的此服务

因此,只要您需要使该服务实例在应用程序范围内可用,请选择两种方法之一

希望这能帮助

最新更新