nun*_*uda 6 angularjs typescript ecmascript-6 ionic2 angular
我在一个真实的项目中有一个真实的场景,我需要2个服务来访问彼此的属性和/或方法.我不是Angular专家所以它可能吗?
我试过了,它失败了.这是我的尝试:
app.component.ts
import { Component } from '@angular/core';
import { FirstService } from './first.service';
import { SecondService } from './second.service';
@Component({
selector: 'my-app',
template: '<h1>Hello world!</h1>',
providers: [FirstService, SecondService]
})
export class AppComponent {
constructor(public firstService: FirstService, public secondService: SecondService) {
console.log(firstService.foo);
console.log(secondService.bar);
}
}
Run Code Online (Sandbox Code Playgroud)
first.service.ts
import { Injectable } from '@angular/core';
import { SecondService } from './second.service';
@Injectable()
export class FirstService {
foo: string = 'abc';
constructor(public secondService: SecondService) {
this.foo = this.foo + this.secondService.bar;
}
}
Run Code Online (Sandbox Code Playgroud)
second.service.ts
import { Injectable } from '@angular/core';
import { FirstService } from './first.service';
@Injectable()
export class SecondService {
bar: string = 'xyz';
constructor(public firstService: FirstService) {
this.bar = this.bar + this.firstService.foo;
}
}
Run Code Online (Sandbox Code Playgroud)
Plunker:http://plnkr.co/edit/PQ7Uw1WHpvzPRf6yyLFd?p = preview
只是将第二个服务注入第一个服务工作正常,但是一旦我将第一个服务注入第二个服务,它就会失败并向控制台抛出错误.
那有什么不对?
工作解决方案应将以下内容打印到控制台日志:
abcxyz
xyzabc
Run Code Online (Sandbox Code Playgroud)
提前致谢!
AngularJS 不允许注入循环依赖。
\n\nMi\xc5\xa1ko Hevery,AngularJS 的作者之一,建议寻找共同元素:
\n\n+---------+ +---------+\n| A |<-----| B |\n| | | | +-+ |\n| | | +->|C| |\n| |------+---->| | |\n| | | +-+ |\n+---------+ +---------+\nRun Code Online (Sandbox Code Playgroud)\n\n并将其提取到第三个服务:
\n\n +---------+\n+---------+ | B |\n| A |<-------------| |\n| | | |\n| | +---+ | |\n| |--->| C |<----| |\n| | +---+ +---------+\n+---------+\nRun Code Online (Sandbox Code Playgroud)\n\n有关更多信息,请参阅构造函数中的循环依赖和Mi\xc5\xa1ko Hevery的依赖注入。
\n| 归档时间: |
|
| 查看次数: |
570 次 |
| 最近记录: |