首页 > 解决方案 > 解决路由器错误:未捕获错误:无法解析 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'];
    });
  }
}

标签: angular

解决方案


有很多原因可以做到这一点:

1-似乎您在关键字@之前忘记了装饰器InjectableMemberListResolver

应该@Injectable不是Injectable

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

import 'core-js/es7/reflect';

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

注意:只要您使用,您就不需要将 添加Serviceproviders数组中,这将使该服务的相同版本也可用于整个应用程序app.module.ts{ providedIn: 'root' }

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

希望这会有所帮助


推荐阅读