如果我创建一个支持类,例如具有HttpClient的UserList将其注入其中,然后无论谁实例化该类都必须在构造函数中将HttpClient对象传递给它.不应该@inject(HttpClient)负责获取HttpClient单例并将其注入构造函数中吗?否则,每个需要引用UserList的类也将获得对HttpClient的引用,以便它可以将其传递给UserList构造函数(并且无法实现注入的目的).
UserList.ts
@inject(HttpClient) export class UserList { constructor(public http: HttpClient){ } ... }
DoSomething.ts
export class DoSomething { userList: UserList; constructor(){ this.userList = new UserList(); //doesn't work without passing HttpClient } }
为了完成这项工作,我必须在DoSomething类中获得对HttpClient的引用,即使它不会直接使用它.似乎执行不力的工作版本:
DoSomething.ts
@inject(HttpClient) export class DoSomething { userList: UserList; constructor(public http: HttpClient){ this.userList = new UserList(http); } }
解决方法
处理此问题的正确方法是使用Factory Resolver
import { Factory } from 'aurelia-framework'; @inject(Factory.of(UserList)) export class DoSomething { userList: UserList; constructor(UserList) { // this is a factory,so you call the function without new this.userList = UserList(); } } @inject(HttpClient) export class UserList { http: HttpClient; constructor(HttpClient) { this.http = HttpClient; } }
有关详细信息,请参阅此related question或official docs中给出的答案.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。