angular – 如何解决循环依赖
我有3项服务:
用户注册时我应该创建新帐户,因此我将account.service.ts导入auth.service.ts.我应该这样做,因为我使用注册表单数据来创建一个新帐户. @Injectable() export class AuthService { constructor(public accountService: AccountService) {} signUp(name: string,phone: string,email: string,password: string): void { ... userPool.signUp(phone,password,attributeList,null,(err: any,result: any) => { if (err) { ... return; } this.accountService.createAccount(name,phone,email).subscribe(res => { ... this.router.navigate(['/auth/confirmation-code']); }); }); } 因此,当我使用AWS Cognito时,我应该将auth.service.ts中的授权令牌添加到http.service.ts @Injectable() export class HttpService { private actionUrl: string; private headers: Headers; private options: RequestOptions; constructor( public _http: Http,public authService: AuthService ) { this.actionUrl = 'https://example.com/dev'; this.headers = new Headers(); this.authService.getAuthenticatedUser().getSession((err: any,session: any) => { if(err) return; this.headers.append('Authorization',session.getIdToken().getJwtToken()); }); this.headers.append('Content-Type','application/json'); this.headers.append('Accept','application/json'); this.headers.append('Access-Control-Allow-Headers','Content-Type,X-XSRF-TOKEN'); this.headers.append('Access-Control-Allow-Origin','*'); this.options = new RequestOptions({ headers: this.headers }); } get(request: string): Observable<any> { return this._http.get(`${this.actionUrl}${request}`) .map(res => this.extractData(res)) .catch(this.handleError); } 在我的account.service.ts中,我应该使用http.service.ts来创建新帐户. @Injectable() export class AccountService { constructor(public httpService: HttpService) {}
据我所知,这是循环依赖错误. 解决方法
您可以使用Injector.像往常一样通过构造函数注入它,然后当您需要一些导致循环依赖的服务时,从中获取该服务.
class HttpService { constructor(private injector: Injector) { } doSomething() { const auth = this.injector.get(AuthService); // use auth as usual } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- angularjs – Angular过滤器定义中的’anyPropertyKey’是什
- Anglejs – 跨域图像上传角度laravel
- 使用Simple Frontend+Aegis方式发布并获取webservice
- 如何仅使用bootstrap的模态对话框,而不是整个bootstrap.css
- bootstrap modal弹出框的垂直居中
- 发布到IIS的webservice无法调用office的解决方法
- Angular 2媒体查询
- 使用Bootstrap插件datapicker获取时间
- angularjs – 在ng-Submit中访问表单元素
- twitter-bootstrap – Bootstrap.js,Bootstrap.min.js,Boot