在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-您似乎忘记了MemberListResolver
中Injectable
关键字之前的@
装饰器
应该是@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
阵列中,这将使整个应用程序中也可以使用相同版本的此服务因此,只要您需要使该服务实例在应用程序范围内可用,请选择两种方法之一
希望这能帮助